Error al crear una clave externa desde MySQL Workbench

9

Estoy tratando de sincronizar los cambios de esquema de MySQL Workbench a mi base de datos. Recibo el siguiente error cuando intenta crear una clave foránea:

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

Aquí está la declaración que está tratando de ejecutar:

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

¿Alguna idea de lo que significa este error?

BenV
fuente

Respuestas:

11

Recibirá este mensaje si está tratando de agregar una restricción con un nombre que ya se utiliza en otro lugar.

De acuerdo con esta publicación , puede verificar su restricción de esta manera:

Si la tabla que está intentando crear incluye una restricción de clave externa, y ha proporcionado su propio nombre para esa restricción, recuerde que debe ser única dentro de la base de datos. Ejecute esta consulta para ver si ese nombre está en uso en alguna parte:

SELECT
  constraint_name,
  table_name
FROM
  information_schema.table_constraints
WHERE
  constraint_type = 'FOREIGN KEY'
  AND table_schema = DATABASE()
ORDER BY
  constraint_name;
Am1rr3zA
fuente
La clave externa no apareció en esta consulta, pero cuando miré la tabla había un índice allí con el mismo nombre. Creo que es un error con la sincronización en MySQL Workbench. Descargué la última versión (5.2.31) y el problema desapareció.
BenV