Допустим у нас есть mysql база данных site_db, а в ней таблица tablename.
Нам нужно конвертировать таблицу tablename из myisam в innodb.

По идее всё просто.

mysql -u root -p
USE site_db;
ALTER TABLE tablename ENGINE=InnoDB;


Но в жизни мы можем получить следующий ответ ответ

ERROR 1214 (HY000): The used table type doesn't support FULLTEXT indexes


И вот здесь можно побороться.

SHOW CREATE TABLE tablename;


Нам покажут много строк, среди которых будет строчка с текстом

FULLTEXT KEY `key_name` (`column_list`)


или что-то около того. Важно чтоб в начале было FULLTEXT KEY.
Запомнили этот 'key_name'.
Удаляем этот индекс

ALTER TABLE tablename DROP INDEX key_name;


в ответ получим что-то такое

Query OK, 6175950 rows affected (20 min 56.88 sec)
Records: 6175950 Duplicates: 0 Warnings: 0


а затем снова пробуем конвертировать

ALTER TABLE tablename ENGINE=InnoDB;


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

Добавить комментарий