Ошибка при удалении базы данных InnoDB


8

Я пытаюсь удалить базу данных в MySQL, но каждый раз, когда я получаю эту ошибку

ERROR 2013 (HY000): Lost connection to MySQL server during query

даже залогинен как root.

Первоначально у меня была поврежденная таблица, которую я не мог воссоздать, поэтому я решил воссоздать БД. У меня есть файл innodb для таблицы, не уверен, что это имеет значение.

Как я могу удалить эту базу данных?

Ответы:


10

Боюсь, вы не можете удалить базу данных.

Проблема приходит в таблицу, которая повреждена. Это не обязательно .ibdфайл. Это, скорее всего, запись словаря данных в ibdata1 ( см. Графическое представление ibdata1 ).

Я писал об этом еще раз Mar 02, 2012: таблица InnoDB SELECT возвращает ERROR 2006 (HY000): сервер MySQL исчез (после отключения питания)

Хотя это утомительно, вот что вы можете сделать, чтобы сохранить другие таблицы в этой поврежденной базе данных bad_db:

ШАГ 01) USE bad_db

ШАГ 02) Бег SELECT COUNT(1) FROM tablename;для каждой таблицы в bad_db. Соберите все имена таблиц, которые не приводят к сбою mysqld при попытке запустить подсчет.

ШАГ 03) Запустите mysqldump -u... -p... bad_db table1 table2 ... tableN > bad_db_goodtables.sql для всех таблиц, которые не сбой mysqld.

Если вы собираетесь использовать другое имя базы данных, перезагрузите bad_db_goodtables.sqlэту новую базу данных.

Если вам нужна база данных с таким же именем, BAD NEWS !!! У вас будет капитальный ремонт ibdata1. Есть еще шаги:

ШАГ 04) mysqldump все остальные базы данных в отдельные файлы дампа

ШАГ 05) Выполните очистку инфраструктуры InnoDB ( см. Мой Oct 29, 2010пост StackOverflow )

ШАГ 06) Перезагрузите все остальные хорошие базы данных mysqldumps.

Попробуйте!


Очень ценится Роландо! Фантастический ответ. Хотелось бы, чтобы был способ починить эту БД.
Хотелось

Некоторое время назад я запускал MySQL, если бы это произошло впервые, спасибо за объяснение.
webLacky3rdClass

1
Как вы можете выполнить очистку инфраструктуры InnoDB, если вы не можете удалить базу данных, а шаг № 2 - удалить все базы данных?
Bancer

Вероятно, это редкая ситуация, но у меня такое было при восстановлении дампа в качестве фоновой работы. Родительский терминал умер, и БД не может быть сброшена, пока соединение восстановления не будет разорвано.
STW
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.