2015-03-18 2 views
0

Я меняю таблицы двигателя от MyISAM в InnoDB:ошибки при изменении таблицы двигателя InnoDB

use db; 
alter table table engine=innodb; 

Но я столкнулся с очень странной проблемой.

Я могу изменить двигатель всех таблиц, но кроме определенных таблиц, , имена которых заканчиваются _1.

Например, я могу изменить таблицы test_2, test_xy, но я не могу изменить таблицу test_1. Когда я пытаюсь это сделать, возникает следующая ошибка:

ERROR 1005 (HY000): Can't create table 'db.#sql-3d9_348' (errno: 139) 

Вышеупомянутый не только один. У меня есть learning_1, learning_2, learning_xy и так много пар.

Я не знаю, почему это происходит. Потому что _1 не специальные строки, такие как обратная сторона, кавычки, знак доллара, знак числа или что-то в этом роде. И я не думаю, что это связано с длиной db, именем таблицы. Кроме того, не связано с размером таблицы.

Есть ли ошибка или ошибка в изменении движка таблицы с определенным именем таблицы?

+0

Что тип двигателя для таблиц, оканчивающихся _1? –

+0

Все таблицы были MyISAM. независимо от '_1',' _2' и '_xy' – Jeon

+0

Какую версию MySQl вы используете? Поддержка индекса Fyi .. FULLTEXT для таблиц InnoDB требует> = MySQL 5.6.4 Хотя не уверен, что вы получили тип FULLTEXT в таблицах с _1? –

ответ

0

Это моя вина.

Это не связано с _1, но оно связано с количеством столбцов.

Столы с _1 в конце названия имеют 1,001 столбцов.

Это слишком большой для InnoDB

0

Я понятия не имею, почему _1 является проблемой, но, возможно, это временное решение

use db; 
RENAME TABLE test_1 TO test1; 
alter table test1 engine=innodb; 
RENAME TABLE test1 TO test_1; 

Конечно, я хотел бы предложить резервную копию, прежде чем делать что-либо

Смежные вопросы