Отбрасывание силы mysql обходящий ограничение внешнего ключа

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

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

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

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

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

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

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

Идеи?

130
задан Brian Tompsett - 汤莱恩 22 May 2017 в 19:58
поделиться

3 ответа

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

-21
ответ дан 24 November 2019 в 00:21
поделиться

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

mysqldump --no-data --add-drop-database --add-drop-table -hHOSTNAME -uUSERNAME -p> dump.sql

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

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

source dump.sql;

3
ответ дан 24 November 2019 в 00:21
поделиться

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

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 должен снова включить проверку внешнего ключа. Пока проверки отключены, таблицы можно отбросить, а затем снова включить проверки, чтобы сохранить целостность структуры таблицы.

375
ответ дан 24 November 2019 в 00:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: