MySQL4.0→4.1へのデータ移行で文字化け
というのが発生してしまいました。
MySQL4.1の仕様変更の罠にまんまとハマった、といったところでしょうか。
あれこれやってみたのですが、my.ini(Windows版のMySQLなもので。Linux版の場合はmy.cnf)に「skip-character-set-client-handshake」を指定することで解決した模様。
詳細は「MySQLユーザ会のFAQ」を参考にさせていただきました。
手順は以下のとおり。
- MySQL4.0からmysqldumpを使ってデータをバックアップ
mysqldump -u root -p -x -F --all-databases > C:\backup.dmp
- MySQL4.1.22の「my.ini」を下記のように編集
※ Windowsプラットフォームなので文字コードはCP932を指定した。[mysql] default-character-set=cp932 : [mysqld] skip-character-set-client-handshake default-character-set=cp932 : [mysqldump] default-character-set=cp932
- 一旦MySQLを再起動
net stop mysql net start mysql
- 1. で取得したバックアップをリストア
念のために「–default-character-set」オプションを指定する。mysql -u root -p --default-character-set=cp932 < ドライブ:\パス\backup.dmp
- 権限テーブルのアップグレード
mysql -f -u root -p < MySQLインストールパス\scripts\mysql_fix_privilege_tables.sql
なお、この方法でMySQL4.1に移行したデータをバックアップする際、mysqldumpに「–default-character-set=cp932」のオプションをつけないと、特定文字(表、など)の後に「¥」マーク(エスケープ文字)が挿入されるので注意(0x5C問題というやつか)。
このへんの文字変換については、もうすこし勉強しなくては。
You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
Leave a Reply