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