Удалить разбитую таблицу Innodb - PullRequest
4 голосов
/ 10 июля 2010

Я не могу удалить / удалить разбитую таблицу Innodb.Я получаю следующую ошибку:

ОШИБКА 1051 (42S02): неизвестная таблица 'account'

И если я хочу ее создать, я получаю следующую ошибку:

ОШИБКА 1005(HY000): невозможно создать таблицу «учетных записей» (номер ошибки: -1)

Это происходит на моем сервере после случайного сбоя питания.

С уважением

Ответы [ 4 ]

3 голосов
/ 25 февраля 2011

Я также нашел эту проблему здесь http://www.randombugs.com/linux/crash-innodb-table.html, и кажется, что удаление файла ibdata и перезапуск mysql могут решить эту проблемуВ любом случае, это не совсем решение, если у вас нет резервной копии.

3 голосов
/ 10 июля 2010

Помогает ли отключение ограничений внешнего ключа перед удалением таблицы?

set foreign_key_checks=0;
drop table <table>;
set foreign_key_checks=1;

Существует сообщение об ошибке, в котором подробно описано что-то похожее, но мне не ясно, если это та же проблема:

http://bugs.mysql.com/bug.php?id=5784

Если нет, вы можете попробовать mysqlcheck :

mysqlcheck -u root -p <dbname> --auto-repair --check --optimize --databases

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

1 голос
/ 24 июля 2010

Я предполагаю, что InnoDB даже не загружен (проверьте ПОКАЗАТЬ ДВИГАТЕЛИ), поэтому вы не сможете УДАЛИТЬ его, пока не решите сначала эту проблему.в режиме восстановления 3 сбросьте все, что вам нужно, затем выключите и удалите настройку режима восстановления:

http://dev.mysql.com/doc/refman/5.0/en/forcing-recovery.html

0 голосов
/ 18 февраля 2016

Простое решение, которое сработало для меня.

  1. Попробуйте удалить таблицу.

    таблица перетаскивания tableOne;

Вы увидите ошибку:

ERROR 1051 (42S02): Unknown table 'tableOne'
  1. Скопируйте оператор создания этой таблицы из другой базы данных или запишите его.

    CREATE TABLE tableOne (ID int (11) NOT NULL, LOCKED tinyint (1) NOT NULL) ENGINE = InnoDB;

Успешный

Query OK, 0 rows affected (0.03 sec)
  1. Оставить стол

    drop table tableOne;  
    

Успешно

    Query OK, 0 rows affected (0.01 sec) 
...