SQL

Конвертация из MyISAM в InnoDB и обратно для таблиц MySQL

Конвертация будет проводиться из sql дампа.

Сначала в конфиге mysql проверяем включена ли поддержка InnoDB и другие параметры.

#skip-innodb innodb_data_file_path = ibdata1:100M:autoextend //минимальный файл 100мб и разрешено авто-увеличение файла

При желании вместо innodb_data_file_path можно использовать innodb_file_per_table, тогда под каждую таблицу будет использоваться свой отдельный файл.

После изменения нужно перезапустить mysql

Итак, процесс конвертации:

mysqldump --opt -u USER -p DBNAME > dbname.sql //создание дампа

sed s/ENGINE=MyISAM/ENGINE=InnoDB/g dbname.sql > dbname.innodb.sql //MyISAM → InnoDB

sed s/ENGINE=InnoDB/ENGINE=MyISAM/g dbname.sql > dbname.myisam.sql //InnoDB → MyISAM

mysqladmin -u USER -p

drop DBNAME //удаляем

mysqladmin -u USER -p create DBNAME //создаем снова

mysql -u USER -p DBNAME < dbname.{innodb|myisam}.sql //заливаем дамп

Готово.

Администратор

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