Фантомные таблицы MySQL

#mysql #sql

#mysql #sql

Вопрос:

Я выполнил запрос на удаление таблицы MySQL … мой графический интерфейс разбился прямо в середине процесса. Таблица не существует в списке; однако, когда я собираюсь создать новую, в ней говорится, что таблица с таким именем уже существует. Я попытался выполнить УДАЛЕНИЕ ТАБЛИЦЫ и ПЕРЕИМЕНОВАНИЕ этой фантомной таблицы, но оба запроса выполняются бесконечно.

К вашему сведению, я не могу перезапустить MySQL, потому что дерьмо может сломаться на наших живых сайтах.

Любая помощь приветствуется.

Комментарии:

1. Пробовал как navicat, так и mysql workbench… Я не думаю, что проблема в графическом интерфейсе.

2. Вы пробовали клиент командной строки?

3. Да, я действительно получаю файл, не найденный в файле .frm, при выполнении запросов к этой фантомной таблице. Это занимает около 10 минут, чтобы появиться как ошибка.

Ответ №1:

Попробуйте восстановить таблицу: http://dev.mysql.com/doc/refman/5.1/en/repair-table.html

Комментарии:

1. Восстановление таблицы не работает, она возвращает два набора результатов: «Таблица не существует» И «Повреждена»

2. Хммм, хорошо. Затем вам нужно напрямую манипулировать файлами таблицы. Подробности см. В других ответах.

Ответ №2:

Имя таблицы соответствует трем файлам в файловой системе с .frm .myd расширением a .myi и (для определения таблицы, файлов данных и индексов соответственно), Один из этих файлов поврежден, что не позволяет MySQL выполнить ваш заказ.

Вариант 1 удаление файлов из файловой системы
Посмотрите на файловую систему, чтобы увидеть, какой файл все еще существует.
Если файл .frm отсутствует, вы должны иметь возможность удалить два других файла.
Если файл .frm все еще существует, не удаляйте, MySQL по-прежнему блокирует этот файл.

Вариант 2 восстановление базы данных
Используйте myisamchk для диагностики и восстановления вашей базы данных.

Смотрите: http://forge.mysql.com/wiki/MySQL_Internals_File_Formats
И: http://dev.mysql.com/doc/refman/5.0/en/myisam-repair.html

Ответ №3:

Проверьте каталог, в котором mysql хранит базы данных. В Ubuntu он находится в /var/lib/mysql, но он может отличаться в зависимости от вашей ОС и конфигурации. Внутри этого каталога есть каталог для каждой базы данных, перейдите в каталог проблемной базы данных и удалите любой файл с именем таблицы с расширениями .frm, .myd и .myi.

Ответ №4:

Похоже, у вас есть разрыв между тем, что у вас есть, и тем, что, по мнению вашего сервера, у вас есть.

Вам потребуется доступ по SSH, и вам придется восстанавливать таблицу вручную.

Войдите в SSH и введите:

 mysql -u root -p
  

И введите свой пароль root mysql.

Затем

 show databases
  

И в нем будут перечислены все базы данных на вашем сервере.

Выберите нужную базу данных с помощью

 use databasename;
  

Затем

 show tables;
  

Здесь должна быть указана каждая таблица в вашей базе данных. Вполне вероятно, что он все еще отображается там, поэтому выполните

 drop tablename;
  

Надеюсь, это исправит вашу проблему.

Ответ №5:

Закончилось восстановлением из резервной копии … редактирование файлов в файловой системе пугает и, возможно, потребовало перезагрузки.