2009年4月15日水曜日

mysqldumpで文字化けデータを頑張ってダンプ&リストア

どうも俺です。
昨日に引き続きMySQL関連のテーマをメモします。

mysqldumpでデータをダンプ&別サーバへリストアなんて事あると思います。
その時に文字化けで少しハマったのでメモしておきます。

色んなブログにも記されていますが、mysqldumpでデータを取得すると自動でutf8で取得されてしまいます。
利用しているデータベースがsjis(cp932)を利用しているとします。
mysql> show variables like '%char%';
+--------------------------+---------------------------------------+
| Variable_name | Value |
+--------------------------+---------------------------------------+
| character_set_client | cp932 |
| character_set_connection | cp932 |
| character_set_database | cp932 |
| character_set_filesystem | binary |
| character_set_results | cp932 |
| character_set_server | cp932 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/mysql/data/mysql/charsets/ |
+--------------------------+---------------------------------------+
この状態でダンプと取ります。
# mysqldump DATABASE_NAME > msyql.dump
これをこのままリストアすると
# mysql DATABASE_NAME < mysql.dmp
文字化けが原因でリストアできない場合があります。

こんな場合は使用している文字コードに関係なく
# mysqldump DATABASE_NAME --default-character-set=binary > mysql.dump
と --default-character-set=binary オプションを付けてダンプを取り
# mysql DATABASE_NAME --default-character-set=binary < mysql.dump
と --default-character-set=binary オプションを付けてリストアすれば大丈夫です。

0 件のコメント:

amazon