日々様々なトラブルにハマっている、困ったシステム管理者の奮闘日記です。

MySQL4.0→4.1へのデータ移行で文字化け

というのが発生してしまいました。
MySQL4.1の仕様変更の罠にまんまとハマった、といったところでしょうか。

あれこれやってみたのですが、my.ini(Windows版のMySQLなもので。Linux版の場合はmy.cnf)に「skip-character-set-client-handshake」を指定することで解決した模様。

詳細は「MySQLユーザ会のFAQ」を参考にさせていただきました。

手順は以下のとおり。

  1. MySQL4.0からmysqldumpを使ってデータをバックアップ
    mysqldump -u root -p -x -F --all-databases > C:\backup.dmp
  2. 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
  3. 一旦MySQLを再起動
    net stop mysql
    net start mysql
  4. 1. で取得したバックアップをリストア
    念のために「–default-character-set」オプションを指定する。

    mysql -u root -p --default-character-set=cp932 < ドライブ:\パス\backup.dmp
  5. 権限テーブルのアップグレード
    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.

AddThis Social Bookmark Button

Leave a Reply