Помилка створення стороннього ключа з 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

Будь-які ідеї, що означає ця помилка?

Відповіді:


11

Це повідомлення ви отримаєте, якщо намагаєтесь додати обмеження з іменем, яке вже використовується десь в іншому місці.

Відповідно до цієї публікації ви можете перевірити своє обмеження так:

Якщо таблиця, яку ви намагаєтеся створити, містить обмеження іноземного ключа, і ви вказали власне ім’я для цього обмеження, пам’ятайте, що воно повинно бути унікальним у базі даних. Запустіть цей запит, щоб побачити, чи використовується це ім’я десь:

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

Іноземний ключ не з’явився в цьому запиті, але коли я подивився на таблицю, там був індекс з такою ж назвою. Я вважаю, що це помилка з синхронізацією в MySQL Workbench. Я завантажив останню версію (5.2.31) і проблеми вже немає.
BenV
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.