Erro ao criar chave estrangeira do MySQL Workbench


9

Estou tentando sincronizar alterações de esquema do MySQL Workbench para o meu banco de dados. Estou recebendo o seguinte erro ao tentar criar uma chave estrangeira:

Executing SQL script in server
ERROR: Error 1005: Can't create table 'tomato.#sql-2730_1b8' (errno: 121)

Aqui está a instrução que ele está tentando executar:

ALTER TABLE `tomato`.`ing_allergy_ingredient` 
ADD CONSTRAINT `fk_ai_allergy`
FOREIGN KEY (`allergy_id` )
REFERENCES `tomato`.`ing_allergy` (`allergy_id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION

Alguma idéia do que esse erro significa?

Respostas:


11

Você receberá essa mensagem se estiver tentando adicionar uma restrição com um nome que já seja usado em outro lugar.

De acordo com este post, você pode verificar sua restrição assim:

Se a tabela que você está tentando criar incluir uma restrição de chave estrangeira e você tiver fornecido seu próprio nome para essa restrição, lembre-se de que ela deve ser exclusiva no banco de dados. Execute esta consulta para ver se esse nome está em uso em algum lugar:

SELECT
  constraint_name,
  table_name
FROM
  information_schema.table_constraints
WHERE
  constraint_type = 'FOREIGN KEY'
  AND table_schema = DATABASE()
ORDER BY
  constraint_name;

A chave estrangeira não apareceu nesta consulta, mas quando olhei para a tabela, havia um índice com o mesmo nome. Eu acredito que é um bug com a sincronização no MySQL Workbench. Fiz o download da versão mais recente (5.2.31) e o problema desapareceu.
BenV
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.