MySQLデータベースのリストアで文字化けする問題への対応メモ

文字コードがEUC-JPのMySQLデータベースを、別サーバのCentOS 6の標準MySQL(バージョン5.1.73)でリストアすると、文字化けして困ったということがあった。

四苦八苦した結果、以下の方法で、何とか文字化けをすることなく、リストアすることができたので、メモとしてまとめておく。

(1)CentOS 6の/etc/my.cnfを修正する。

《修正前の/etc/my.cnf》
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

《修正後の/etc/my.cnf》
/etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
default-character-set=ujis ←追記
character-set-server=ujis ←追記

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[client] ←追記
default-character-set=ujis ←追記

[mysql] ←追記
default-character-set=ujis ←追記

[mysqldump] ←追記
default-character-set=ujis ←追記

(2)ダンプコマンドに文字コードの指定を付けてダンプする。

ダンプファイル作成元サーバで、ダンプコマンドに文字コードの指定を付けてダンプする。
mysqldump --default-character-set=ujis データベース名 > データベース名.sql

(3)create database(データベース作成)時に文字コードの指定を付ける。

データベースのリストアを行うサーバで、データベース作成コマンドを実行する場合は文字コードを付ける。
mysql> create database データベース名 CHARACTER SET ujis;

(4)データベースのリストア・コマンドを実行する場合、文字コードの指定を付ける。

# mysql データベース名 -u root -p --default-character-set=ujis < データベース名.sql

以上4つの点に気を付けることで文字化け問題を解決できたが、必ずしもこの方法で解決できるとは限らないであろうから、文字化け問題は厄介だなぁ、と思った。

前へ

CGIエラー「Can't locate CGI.pm in @INC」の原因と解決方法

次へ

成田空港第2ビル駅から京成金町駅まで電車で移動した時のメモ