Я пытаюсь удалить все таблицы из базы данных кроме одной, и я заканчиваю тем, что имел следующую ошибку:
Не удалить или обновить родительскую строку: ограничение внешнего ключа перестало работать
Конечно, я мог испытать и ошибка видеть то, что те ключевые ограничения и в конечном счете удаляют все таблицы, но я хотел бы знать, существует ли быстрый способ вызвать, отбрасывают все таблицы (поскольку я смогу повторно ввести тех, которых я не хочу удаленный).
Google нацелил меня на некоторый сайт, который предложил следующий метод:
mysql> SET foreign_key_checks = 0;
mysql> drop table ...
mysql> SET foreign_key_checks = 1;
Короткий ответ - это, действительно не добивался цели, так как я закончил тем, что получил ту же ошибку, в то время как я смог удалить еще некоторые таблицы. Я видел на Переполнении стека способы получить все внешние ключи, связанные с определенной таблицей, но это является слишком трудоемким, если я не пишу сценарий всего этого (который является выполнимым в случае нет никакой другой опции),
База данных 4.1, таким образом, я не могу использовать DROP DATABASE
Идеи?
Поскольку вы не заинтересованы в хранении каких-либо данных, удалите всю базу данных и создайте новую.
База данных удаления существует во всех версиях MySQL. Но если вы хотите сохранить структуру таблицы, вот идея
mysqldump --no-data --add-drop-database --add-drop-table -hHOSTNAME -uUSERNAME -p> dump.sql
Это программа, а не команда mysql
Затем войдите в mysql и
source dump.sql;
Это может быть полезно для тех, кто попал сюда из поиск. Убедитесь, что вы пытаетесь удалить таблицу , а не представление .
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
должен снова включить проверку внешнего ключа. Пока проверки отключены, таблицы можно отбросить, а затем снова включить проверки, чтобы сохранить целостность структуры таблицы.