MySQL で、データベースをテキストデータにエクスポート(バックアップ)する方法は、mysqldump コマンドを使えばよい。以下のようにする。
# mysqldump -u root -p your_database_name > your_database_name.sql
さて、これを元に戻すときに、
# mysql -u root -p your_database_name < your_database_name.sql
※ your_database_name というデータベースの中身は空であること。
のようにすれば簡単にインポートできるのだが、エクスポート/インポートするそれぞれのマシンで違う設定の MySQL が動いていたりすると、インポートしてみたらデータが文字化けしてた・・・なんてことが実際にあった。
your_database_name.sql のキャラクタセットは UTF8 で書き出されているのに、単純に mysql コマンドでインポートしただけでは文字が化けてしまう。
まずはインポートする方のマシンの MySQL のキャラクタセットの設定を調べてみよう。コンソールから mysql コマンドでmysql にログインして、以下のコマンドを実行する。
mysql> <strong>SHOW VARIABLES LIKE 'character_set%';</strong>
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
おやおやデフォルトがほとんど latin1 になっている。これでは utf8 で読み込んでくれそうにもない。そこで、
- 解決方法その1
以下のように --default-character-set=utf8 などと文字コード(キャラクタセット)を指定する。
# mysql -u root -p <font color="red"><strong>--default-character-set=utf8</strong></font> your_database_name < your_database_name.sql
- 解決方法その2
ほかにも phpMyAdmin からファイルをアップロードし、その際に文字コードを UTF8 にしてあげればよさそう。だけどこの方法だとアップロードのファイルサイズに制限があると少し大きめのデータベースのインポートは NG だ。root になれるなら、ファイルサイズの制限は php.ini の
php_value upload_max_filesize <font color="red"><strong>2M</strong></font>
の赤色部分を次のように修正するといいらしい。
php_value upload_max_filesize <font color="blue"><strong>8M</strong></font>
- 解決方法その3
root になれるなら MySQL のデフォルト文字コードを UTF-8 に変更する。
/etc/my.cnf か /etc/mysql/my.cnf を開き(ない場合は mysql が起動するときの設定ファイルを探す)、MySQLのデフォルト文字コードを UTF-8 に変更する。
# vi /etc/my.cnf
[mysqld]
default-character-set = utf8
[mysql]
default-character-set = utf8
[mysqldump]
default-character-set = utf8
トラックバック URL:
https://perltips.twinkle.cc/trackback/151