Как отбрасывать таблицы с циклическими внешними ключами в MySQL - PullRequest
2 голосов
/ 21 октября 2011

У меня есть две таблицы, Родитель и Ребенок.Столбец Parent.favorite_child имеет ограничение внешнего ключа, указывающее на Child.id.И столбец Child.parent имеет ограничение внешнего ключа, указывающее на Parent.id.

Теперь вот странная часть.Я пытаюсь удалить свою таблицу Child, которая не содержит записей , но MySQL выдает мне ошибку:

ERROR 1217: Cannot delete or update a parent row: a foreign key constraint fails
SQL Statement:
drop table `mydatabase`.`Child`

Почему MySQL выдает эту ошибку?Буквально в таблице Child нет записей, на которые можно было бы что-либо указывать.

Ответы [ 3 ]

3 голосов
/ 21 октября 2011

Прежде чем вы сможете удалить дочернюю таблицу, вам нужно сначала удалить внешний ключ в родительской таблице:

ALTER TABLE `Parent` DROP FOREIGN KEY `Parent_ibfk_1` ;
0 голосов
/ 04 августа 2018

Попробуйте удалить ограничения внешнего ключа из вашей таблицы.

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

просто щелкните правой кнопкой мыши на этом разделе ключа и удалите внешний ключ, как это. внутри красной секции изображения и после этого нажмите okk, чтобы удалить внешний ключ, и теперь все можно удалить с помощью AlTER table table_name drop column column_name;

спасибо.

0 голосов
/ 21 октября 2011

Я бы сначала попытался удалить ограничение внешнего ключа

Возможно, вы также захотите попробовать команду «show engine innodb status» - она ​​может указывать на наличие какой-либо проблемы с датой, когда в таблицах были данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...