Принудительное падение 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
- откроется новая страница с флажком внизу, говорящим "Проверка внешнего ключа", снимите флажок.
- подтвердите удаление, приняв "да".
вы можете использовать следующие шаги, его работа для меня, чтобы удалить таблицу с ограничением, решение уже объяснено в приведенном выше комментарии, я просто добавил снимок экрана для этого -
база данных Drop существует во всех версиях MySQL. Но если вы хотите сохранить структуру таблицы, вот идея
команды mysqldump --нет данных-добавить-падение-база данных-добавить-брось-таблицу -hHOSTNAME -uUSERNAME -P > на свалку.в SQL
Это программа, а не команда MySQL
затем войдите в mysql и
свалка источник.в SQL;