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?

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;

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.