2014-05-18 1 views
1

Я запускаю серию сценариев обновления. В записке, в скрипте ранее, было много из них:Почему MySQL дает мне ошибку ограничения внешнего ключа на таблице, которой у меня нет?

ALTER TABLE файлы DROP FOREIGN KEY files_ibfk_1, DROP FOREIGN KEY files_ibfk_2;

Однако эти ключи не существовали ....

Сейчас я получаю сообщение об ошибке ...:

Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа терпит неудачу (. pacsdbcmi#sql-536_77, скованность #sql-536_77_ibfk_1 FOREIGN KEY (series_fk) Лит series (pk))

Что такое # sql-536_77? Может кто-нибудь объяснить, что это значит? Я не имею таблицу с именем # SQL-536-77, ни ключа в серии под названием # SQL-536_77_ibfk_1

Благодаря

+0

Это потому, что у вас есть строки, на которые ссылается эта система FK. Вы должны либо отключить проверку fk (SET FOREIGN_KEY_CHECKS = 0), либо отключить каскадную вещь. – enapupe

ответ

1

Это потому, что есть еще таблицы, является чужеродным для родительской таблицы. CASCADE соотношение должно быть there.So перед вами ALTER внешнего ключа родительской таблицы, пожалуйста, удалите существующий CASCADES

         OR 

USE

SET foreign_key_checks = 0; 

И

ALTER TABLE files DROP FOREIGN KEY files_ibfk_1, DROP FOREIGN KEY files_ibfk_2; 

ТОГДА

SET foreign_key_checks = 1; 

Устанавливая внешнего ключа проверки на 0, вы можете иметь возможность изменить таблицу. Как только это было сделано с операциями на столе, вы можете сбросить проверку ключа на 1 снова, и все снова на месте.

Смежные вопросы