1. もし古いデータベースがLatin1で設定されていたら?
mysqldump -uroot -prootdbpass --default-character-set=latin1 mtdb > mysql_dump_latin1.sql
2. もし古いデータベースがMyISAMだったら?
mv mysql_dump_latin1.sql mysql_dump_latin1_myisam.sql cat mysql_dump_latin1_myisam.sql | sed 's/ENGINE=MyISAM/ENGINE=InnoDB/g' | sed 's/CHARSET=latin1/CHARSET=utf8/g' | sed 's/SET NAMES latin1/SET NAMES utf8/g' > mysql_dump_utf8_innodb.sql
3. 5.1系から5.5系へのバトンタッチ
4. 5.5系へのrestore作業
CREATE DATABASE mtdb DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
mysql -uroot -prootdbpass --default-character-set=utf8 mtdb < mysql_dump_utf8_innodb.sql面倒なんで、bashのスクリプトにしちゃいましょう。
#!/bin/bash DB_USER="root" DB_PASS="rootdbpass" DATABASE="mtdb" DATE=`date +'%Y%m%d'` mysqldump -u${DB_USER} -p${DB_PASS} --default-character-set=latin1 ${DATABASE} > mysql_dump_latin1_myisam_${DATE}.sql cat mysql_dump_latin1_myisam_${DATE}.sql | sed 's/ENGINE=MyISAM/ENGINE=InnoDB/g' | sed 's/CHARSET=latin1/CHARSET=utf8/g' | sed 's/SET NAMES latin1/SET NAMES utf8/g' > mysql_dump_utf8_innodb_${DATE}.sql
実践ハイパフォーマンスMySQL 第2版 | |
Baron Schwartz Peter Zaitsev Vadim Tkachenko Jeremy D. Zawodny Arjen Lentz Derek J. Balling 伊藤 直也 (監訳) オライリージャパン 2009-12-14 売り上げランキング : 63997 Amazonで詳しく見る by G-Tools |