MySQL 5.1 の MyISAM ⇒ InnoDB に変更したく
去年の夕方から今まで掛りました・・・
参考にしたサイト情報
MyISAM から InnoDB に変更する場合は
事前にバックアップを取得する事をお勧めします。
また、以下の事を確認する必要があります
ストレージエンジンが InnoDB が使える事を確認します。
確認方法
mysql -u root -p mysql> show engines; +------------+---------+----------------------------------------------------------------+--------------+------+------------+ | Engine | Support | | | | | +------------+---------+----------------------------------------------------------------+--------------+------+------------+ | InnoDB | YES | Supports transactions, row-level locking, and foreign keys | YES | YES | YES | | MyISAM | DEFAULT | Default engine as of MySQL 3.23 with great performance | NO | NO | NO | +------------+---------+----------------------------------------------------------------+--------------+------+------------+
InnoDB の Support が YES になっている事を確認します。
もし、 InnoDB の表示が無い場合は、以下の用に my.cnf を修正します。
vi /etc/my.cnf #default-storage-engine = MYISAM default-storage-engine = innodb
#default-storage-engine = MYISAM をコメントアウトします。
その後、 MySQL を再起動します。
また、再起動時に以下のエラーが表示していない事を確認します。
InnoDB: Error: log file ./ib_logfile0 is of different size
エラーが表示している場合は、MySQL を停止後して
以下のファイルを削除する必要があります。
/etc/init.d/mysql stop rm /var/lib/mysql/ib_logfile0 rm /var/lib/mysql/ib_logfile1 rm /var/lib/mysql/ibdata1 /etc/init.d/mysql start
ib_logfilexx と ibdataxx を削除後、MySQL を再起動します。
以下のように、InnoDB の Support が YES になっている事を確認します。
mysql -u root -p mysql> show engines; +------------+---------+----------------------------------------------------------------+--------------+------+------------+ | Engine | Support | | | | | +------------+---------+----------------------------------------------------------------+--------------+------+------------+ | InnoDB | YES | Supports transactions, row-level locking, and foreign keys | YES | YES | YES | | MyISAM | DEFAULT | Default engine as of MySQL 3.23 with great performance | NO | NO | NO | +------------+---------+----------------------------------------------------------------+--------------+------+------------+
ここまで来たらあと少しで完了です
後は、データベースのテーブルをInnoDBに変更するだけです。
ALTER TABLE legacy_my_table ENGINE=InnoDB;
筆者の場合は、phpMyAdmin を使用して変更しました
DB⇒テーブル⇒操作⇒ストレージエンジンを変更後、実行するだけです。