Ошибка создания внешнего ключа из MySQL Workbench

9

Я пытаюсь синхронизировать изменения схемы из MySQL Workbench в моей базе данных. Я получаю следующую ошибку при попытке создать внешний ключ:

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

Вот утверждение, которое он пытается выполнить:

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

Есть идеи, что означает эта ошибка?

BENV
источник

Ответы:

11

Вы получите это сообщение, если попытаетесь добавить ограничение с именем, которое уже используется где-то еще.

Согласно этому сообщению вы можете проверить свои ограничения следующим образом:

Если таблица, которую вы пытаетесь создать, включает в себя ограничение внешнего ключа, и вы указали собственное имя для этого ограничения, помните, что оно должно быть уникальным в базе данных. Запустите этот запрос, чтобы увидеть, используется ли это имя где-нибудь:

SELECT
  constraint_name,
  table_name
FROM
  information_schema.table_constraints
WHERE
  constraint_type = 'FOREIGN KEY'
  AND table_schema = DATABASE()
ORDER BY
  constraint_name;
Am1rr3zA
источник
Внешний ключ не отображался в этом запросе, но когда я посмотрел на таблицу, там был индекс с тем же именем. Я считаю, что это ошибка с синхронизацией в MySQL Workbench. Я скачал последнюю версию (5.2.31) и проблема исчезла.
BenV