- 締切済み
データの移行について
いつもお世話になっております。 MySQLのデータに移行について質問させていただきます。 サーバの移転に伴い、データベースも移行することになりました。 MySQLの文字コードが変わっているため、新しいサーバで文字化けを 起こしてしまいます。 1)データのダンプ $ mysqldump --user=root --password --default-character-set=latin1 DB名 > dump.sql 2)新しいサーバで文字コード変換 $ perl -pi -e 's/utf-8/latin1/' dump.sql 3)インポート $ mysql --user=root --password DB名 < dump.sql 上記の方法で問題がありますでしょうか。 ご教示よろしくお願いいたします。 <旧サーバ> MySQL:3.23.58 文字コード:euc-jp <新サーバ> MySQL:5.0.45 文字コード:utf-8
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- kuroizell
- ベストアンサー率55% (95/170)
よく考えたら、latin1ってMySQLの原産国(北欧)の文字コードですね。 --default-character-set=utf8にしてはいかがでしょうか。 中国語使っていてeuc-jpという時点で、既にutf8が使われているような気がしますが・・・
- yambejp
- ベストアンサー率51% (3827/7415)
OSが不明ですが、perl使っているならlinux系だとして、 nkfでコンバートが妥当でしょうか・・・
補足
yambejp さん、ご回答ありがとうございます。 私が直接サーバを触れるわけではないので、お調べしてご連絡できません。申し訳ございません。 ただ、OSのバージョンまでは分かりませんが旧サーバ・新サーバともにLinux系です。 以下のコマンドで、文字コードを変換するにあたり一点確認がございます。 $ nkf -w dump.sql > dump_utf8.sql 中国語も扱っているデータベースなのですが、上記コマンドを実行し インポートして文字化けは起きませんでしょうか。 よろしくご教示お願いいたします。
- kuroizell
- ベストアンサー率55% (95/170)
>perl -pi -e 's/utf-8/latin1/' dump.sql ファイル中の文字列が置換されているだけで、dump.splというファイル自体の文字コードが変わっていないのではないでしょうか。 適当なテキストエディタで開いて、utf8に指定して保存してみて下さい。
補足
kuroizell さん、ご回答ありがとうございます。 中国語を扱っているデータベースなのですが ご指示いただいた方法を以前に試したことがあるのですが 文字化けをしてしまいました。 以下の方法でやったのですが、私のやり方が間違っていたのでしょうか? 1)秀丸でSQL文を開く。 2)名前を付けて保存で、エンコードの種類を「UTF-8」に変更し保存。 3)再度、秀丸を開くと文字化けしている部分もある。 (主に中国語を扱っている部分) よろしくお願いいたします。
補足
kuroizell さん、ご回答ありがとうございます。 ご提示していただいたご回答ですと手順としては 新サーバでの文字コード変換はなしで、以下で間違いないでしょうか。 1)データのダンプ $ mysqldump --user=root --password --default-character-set=utf8 DB名 > dump.sql 2)インポート $ mysql --user=root --password DB名 < dump.sql よろしくお願いいたします。