Certa vez ocorreu esse erro quando um amigo restaurava backup do mysql e infelizmente não tinha muita coisa na web para auxiliar a resolver o erro. A mensagem de erro é bem clara LOL se você for um desenvolvedor do mysql rsrsrs…
Descobri depois de muita pesquisa que esse erro ocorre porque a query de criação da tabela possui uma CONSTRAINT que tem o mesmo nome de uma outra CONSTRAINT de alguma tabela existente no banco.
Para resolver isso é só alterar o nome de uma das CONSTRAINT :p
Bom, agora está mastigadinho para vocês :p
August 15, 2009
gostei. resolveu meu problema.
mto obrigado
September 2, 2009
Estava passando por esse problema, nem imaginava que poderia ser isso.
Muito Obrigado.
October 9, 2009
Me ajudou a resolver meu problema também.
Obrigado
DNS primário: 200.149.55.142
DNS secundário: 200.165.132.154
October 24, 2009
Resolveu o meu problema.
Muito obrigado.
March 14, 2010
Valeu demais!
Também resolveu o meu problema.
Obrigado!
Opa, aqui também resolveu. \o/
Valew!
July 9, 2010
Pessoas, uma solução bem rápida e prática para isso, sem precisar renomear CONSTRAINT.
Afinal, tem gente que não sabe o que é CONSTRAINT (eu sei!).
O erro abaixo pode acontecer quando você vai (re)criar uma tabela que é do tipo InnoDB.
Can’t create table ‘nomeDoBanco.nomeDaTabela’ (errno: 121).
Tabelas do tipo InnoDB somente são realmente necessárias se você vai utilizar transações.
Se você não precisa usar transações, ou não sabe o que é transações, commit e rollback (então realmente não precisa de InnoDB), prefira usar tabelas do tipo padrão MyIsam, que são muito mais rápidas e ocupam menos espaço em disco, justamente por não utilizarem recursos de transações.
E antes que alguém diga que estou errado… não sou eu que estou inventando, está no manual do MySQL, veja no capítulo 7.
Se não concorda discuta com a Oracle. Sim, a Oracle! Não sabia que a Oracle comprou o MySQL ?!?
Enfim… voltando ao assunto…
Explicite na instrução SQL que cria a sua tabela que você quer usar o tipo MyISAM.
Calma, depois você poderá voltar ao InnoDB (se necessário).
O código para instruir a criar usando MyIsam é algo como:
DROP TABLE IF EXISTS `minhaTabela`;
CREATE TABLE IF NOT EXISTS `minhaTabela` (
`id` int(11) NOT NULL ,
`nome` varchar(100) NOT NULL
PRIMARY KEY (`id`)
) TYPE=MyIsam;
Se você não precisa de InnoDB… Pronto!!!
Apenas fazendo isso você já vai ver que a tabela foi criada e já é possível trabalhar com ela.
Mas se você precisa de InnoDB, ainda tem mais uma coisa a ser feita, alterar a tabela de volta para o tipo InnoDB.
Para isso basta usar o comando ALTER TABLE, assim:
ALTER TABLE `minhaTabela` ENGINE = InnoDB;
Possivelmente você vai receber um erro, com uma mensagem semelhante a essa:
/* SQL Error: Error on rename of ‘.\nomeDoBanco\#sql-618_15′ to ‘.\nomeDoBanco\minhaTabela’ (errno: 121) */
Palma, palma, não priemos cânico… basta executar o mesmo comando novamente ![]()
ALTER TABLE `minhaTabela` ENGINE = InnoDB;
Zé fini !!
Agora sua tabela é novamente InnoDB e você pode usar transações e usufruir da maior segurança de dados que o InnoDB oferece.
E não é só isso… futuramente não precisa mais realizar este procedimento todo, pois o MySQL já vai ter corrigido internamente as parada do bicho que precisava corrigir e já é!
MMJ
@camp_brasileiro
Comments RSS TrackBack Identifier URI
Leave a comment






8 Comments