【環境】
Linux
MySQL
【現象】
AサーバからBサーバでMySQLのデータを移行したら文字化けしている
ちなみにバックアップ方法は
mysqldump と
LOAD DATA INFILE を試した。
【原因】
もちろん 文字コードの違いが原因
最初のAサーバはmy.cnfでも create database コマンドでも
ダンプ時も文字コードをutf-8にしていたがBサーバのmy.cnfは初期設定のままだったため create database 時に文字コードセットしてもうまくいかない
【対応】
まず bサーバでmysqlにログイン
mysql> show variables like "char%";
と打つと
+--------------------------+----------------------------+
+--------------------------+----------------------------+
character_set_client | latin1 |
character_set_connection | latin1 |
character_set_database | utf8 |
character_set_filesystem | binary |
character_set_results | latin1 |
character_set_server | latin1 |
character_set_system | utf8 |
character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
こんな結果が出る
これにあわせて 取得したmysqldumpデータのファイルに少し情報を追加する
上記の場合だと
vi xxxx.dump をして
set @@character_set_client=latin1;
set @@character_set_connection=latin1;
set @@character_set_database=utf8;
set @@character_set_results=latin1;
set @@character_set_server=latin1;
の記述を冒頭に追加し リストア実行する