forum.bitel.ru
http://forum.bitel.ru/

Сломалась таблица в innodb БД. Решение
http://forum.bitel.ru/viewtopic.php?f=25&t=2449
Страница 1 из 1

Автор:  Akhmat [ 17 июн 2009, 09:25 ]
Заголовок сообщения:  Сломалась таблица в innodb БД. Решение

Сломалась табличка у меня в innodb БД (одна из session_detail_ модуля диалап), и при обращении к ней база падала.

Способы CHECK TABLE, REPAIR TABLE, mysqlcheck, и т.д не помогли, падала БД.
REPAIR TABLE вообще не лечит innodb таблицы.

Решил следующим образом: .
Код:
CREATE TABLE <table_new> LIKE <crashed_table>;
INSERT INTO <table_new> SELECT * FROM <crashed_table>;

Если данные заполнились успешно, то сразу переименовываем, и все ок.
Код:
ALTER TABLE <crashed_table> RENAME TO <crashed_table_old>;
ALTER TABLE <table_new> RENAME TO <crashed_table>;


Если же при
Код:
INSERT INTO <table_new> SELECT * FROM <crashed_table>;

падает БД, как и было у меня, то поосновательнее подходим к решению: запускаем mysql с параметром(в my.ini)
Код:
[mysqld]
innodb_force_recovery = 4

при этом БД перестаёт падать при обращение к этой таблице, но и перестает работать конструкция INSERT INTO table SELECT * FROM table2. Потому снимаем копию раненной таблицы(mysqldump, или сторонней программой, например mysqladministrator), и перезаливаем её, предварительно переименовав раненную таблицу, для страховки.


--
Спасибо за оперативную помощь Шамилю, ООО "Бител".

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/