ブログ

さくらのレンタルサーバでのMySQLデータインポート時の文字化け対策
2017.11.17

データベースのデータ量が大きなウェブサイトを「さくらのレンタルサーバ」に移転することになり、 SSH接続してmysqlコマンドでデータをインポートとしたときに、文字化けが発生しました。

先にデータベースはUTF8で作成してあり、そこに他サーバーからのデータファイル(SQL)をインポートしたのですが、 phpmyadminなどで見ると日本語が文字化けしていました。

最初はphpの設定がおかしいのかなと思っていましたが、社内の開発環境では問題なかったため、 MySQLの設定の違いではということになり…。

原因は、さくらのレンタルサーバのMySQLの文字コード設定がujis(EUC)であるためでした。

mysql> show variables like "chara%";
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | ujis                       |
| character_set_connection | ujis                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | ujis                       |
| character_set_server     | ujis                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

「character_set_client」も含めてutf8に変更したいのですができないそうです。

そこでmysqlコマンドに「–default-character-set=utf8」オプションを付けてインポートすると、 無事文字化けしないようになりました。

具体的には、dump_data.sqlをインポートする場合、次のようなコマンドを実行します。

mysql -u (接続ユーザー名) -p --default-character-set=utf8 -h (接続ホスト名) (データベース名) < dump_data.sql