Я сталкивался с той же проблемой с SQLYog v9.01. Сообщение об ошибке вводит в заблуждение, и реальная причина ошибки может быть совершенно другой.
Я решил проверить следующее:
- Проверьте типы таблиц engyne, должны быть оба InnoDb
- Проверьте, не совпадает ли ваша целевая таблица с исходной.
- Проверка типов данных, длины и сопоставления наборов символов для указанных полей.
- Если у вас уже есть данные в ваших таблицах, проверьте их согласованность.
Например, вы должны удалить все несвязанные данные из таблицы B, которая относится к таблице A
DELETE target FROM B AS target LEFT JOIN A USING(id_A) WHERE A.id_A IS NULL
- И наконец, в моем случае мне пришлось очищать таблицы, чтобы успешно создавать свои ограничения.
Создание ограничений вручную из окна Query может дать вам больше информации о вашем типе ошибки.
Просто напоминание:
ALTER TABLE `B` ADD CONSTRAINT `FK_B` FOREIGN KEY (`id_A`) REFERENCES `A` (`id_A`) ON DELETE CASCADE ;
Удачи!