Принудительное падение mysql в обход ограничения внешнего ключа

Я пытаюсь удалить все таблицы из базы данных, кроме одной, и в итоге у меня возникает следующая ошибка:

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

конечно, я мог бы проб и ошибок, чтобы увидеть, что эти ключевые ограничения и в конечном итоге удалить все таблицы, но я хотел бы знать, если есть быстрый способ заставить падение всех таблиц (как я смогу повторно вставить те, которые я не хочу удалить).

Google направили меня на какой-то сайт, который предложил следующий метод:

mysql> SET foreign_key_checks = 0;
mysql> drop table ...
mysql> SET foreign_key_checks = 1;

короткий ответ - это не совсем трюк, так как я получил ту же ошибку, когда смог удалить еще несколько таблиц. Я видел способы переполнения стека, чтобы получить все внешние ключи, связанные с определенной таблицей, но это слишком много времени, если я не напишу все это (что выполнимо в случае, если нет другого варианта)

база данных 4.1, поэтому я не могу использовать DROP DATABASE

идеи?

5 ответов


поскольку вы не заинтересованы в сохранении каких-либо данных, отбросьте всю базу данных и создать новый.


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

SET foreign_key_checks = 0;
-- Drop tables
drop table ...
-- Drop views
drop view ...
SET foreign_key_checks = 1;

SET foreign_key_checks = 0 установить проверки внешнего ключа в off, а затем SET foreign_key_checks = 1 установить проверки внешнего ключа обратно. В то время как проверки выключены таблицы могут быть удалены, проверки затем снова включены, чтобы сохранить целостность структуры таблицы.


Если вы используете phpMyAdmin и затем эта функция уже есть.

  • выберите таблицы, которые вы хотите удалить
  • в раскрывающемся списке в нижней части списка таблиц выберите drop
  • откроется новая страница с флажком внизу, говорящим "Проверка внешнего ключа", снимите флажок.
  • подтвердите удаление, приняв "да".

вы можете использовать следующие шаги, его работа для меня, чтобы удалить таблицу с ограничением, решение уже объяснено в приведенном выше комментарии, я просто добавил снимок экрана для этого -enter image description here


база данных Drop существует во всех версиях MySQL. Но если вы хотите сохранить структуру таблицы, вот идея

команды mysqldump --нет данных-добавить-падение-база данных-добавить-брось-таблицу -hHOSTNAME -uUSERNAME -P > на свалку.в SQL

Это программа, а не команда MySQL

затем войдите в mysql и

свалка источник.в SQL;