Перевод таблиц БД из MyISAM в InnoDB

Список таблиц БД для указанного типа хранилища можно просмотреть командой:

SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'dbname' AND engine = 'MyISAM';

и сконвертировать все таблицы базы:

MUSER="dbuser"
MPASS="dbpass"
MDATABASE="dbname"

echo "Converting tables for database $MDATABASE"
for table in `mysql -u $MUSER -p$MPASS -N -e "SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = '$MDATABASE' AND engine = 'MyISAM'"`
do
  echo -n "  Alter table table $table ... "
  mysql -u $MUSER -p$MPASS -N -e "ALTER TABLE $table ENGINE = InnoDB" $MDATABASE
  echo "done"
done
if [ "$table" = "" ]; then
  echo "No tables found in $MDATABASE"
else
  echo "Converting completed"
fi
( categories: )