Ответ 1
Поскольку вы не заинтересованы в хранении каких-либо данных, удалите всю базу данных и создайте новую.
Я пытаюсь удалить все таблицы из базы данных, кроме одного, и я получаю следующую ошибку:
Не удается удалить или обновить родительскую строку: ограничение внешнего ключа завершено
Конечно, я мог бы попробовать и исправить ошибки, чтобы увидеть, каковы эти ключевые ограничения, и в конечном итоге удалить все таблицы, но я хотел бы знать, есть ли быстрый способ принудительно удалить все таблицы (так как я смогу снова переустановить все таблицы, вставьте те, которые я не хочу удалить).
Google нацелил меня на какой-то сайт, который предложил следующий метод:
mysql> SET foreign_key_checks = 0;
mysql> drop table ...
mysql> SET foreign_key_checks = 1;
Короткий ответ: на самом деле это не трюк, так как я получил ту же ошибку, в то время как мне удалось удалить еще несколько таблиц. Я видел в Qaru способы получить все внешние ключи, связанные с определенной таблицей, но этот путь слишком трудоемкий, если только я script все (что можно сделать в случае, если нет другого варианта)
База данных 4.1, поэтому я не могу использовать DROP DATABASE
Идеи?
Поскольку вы не заинтересованы в хранении каких-либо данных, удалите всю базу данных и создайте новую.
Это может быть полезно для тех, кто попадает сюда из поиска. Убедитесь, что вы пытаетесь удалить таблицу, а не представление.
SET foreign_key_checks = 0; -- Drop tables drop table ... -- Drop views drop view ... SET foreign_key_checks = 1;
SET foreign_key_checks = 0
заключается в том, чтобы отключить проверку внешнего ключа, а затем SET foreign_key_checks = 1
- снова установить проверку внешнего ключа. Пока проверка не выполняется, таблицы можно отбросить, затем проверки вернутся, чтобы сохранить целостность структуры таблицы.
Если вы используете phpmyadmin, эта функция уже существует.
Вы можете использовать следующие шаги, для меня это работало, чтобы отбросить таблицу с ограничением, решение, уже объясненное в приведенном выше комментарии, я просто добавил снимок экрана для этого -
База данных Drop существует во всех версиях MySQL. Но если вы хотите сохранить структуру таблицы, вот идея
mysqldump --no-data --add-drop-database -add-drop-table -hHOSTNAME -uUSERNAME -p > dump.sql
Это программа, а не команда mysql
Затем войдите в mysql и
источник dump.sql;