重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

いつもお世話になっております。
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

A 回答 (3件)

よく考えたら、latin1ってMySQLの原産国(北欧)の文字コードですね。


--default-character-set=utf8にしてはいかがでしょうか。
中国語使っていてeuc-jpという時点で、既にutf8が使われているような気がしますが・・・

この回答への補足

kuroizell さん、ご回答ありがとうございます。

ご提示していただいたご回答ですと手順としては
新サーバでの文字コード変換はなしで、以下で間違いないでしょうか。

1)データのダンプ
  $ mysqldump --user=root --password --default-character-set=utf8 DB名 > dump.sql

2)インポート
  $ mysql --user=root --password DB名 < dump.sql

よろしくお願いいたします。

補足日時:2009/11/10 18:15
    • good
    • 0

OSが不明ですが、perl使っているならlinux系だとして、


nkfでコンバートが妥当でしょうか・・・

この回答への補足

yambejp さん、ご回答ありがとうございます。

私が直接サーバを触れるわけではないので、お調べしてご連絡できません。申し訳ございません。
ただ、OSのバージョンまでは分かりませんが旧サーバ・新サーバともにLinux系です。

以下のコマンドで、文字コードを変換するにあたり一点確認がございます。
$ nkf -w dump.sql > dump_utf8.sql

中国語も扱っているデータベースなのですが、上記コマンドを実行し
インポートして文字化けは起きませんでしょうか。

よろしくご教示お願いいたします。

補足日時:2009/11/10 12:54
    • good
    • 0

>perl -pi -e 's/utf-8/latin1/' dump.sql


ファイル中の文字列が置換されているだけで、dump.splというファイル自体の文字コードが変わっていないのではないでしょうか。
適当なテキストエディタで開いて、utf8に指定して保存してみて下さい。

この回答への補足

kuroizell さん、ご回答ありがとうございます。

中国語を扱っているデータベースなのですが
ご指示いただいた方法を以前に試したことがあるのですが
文字化けをしてしまいました。

以下の方法でやったのですが、私のやり方が間違っていたのでしょうか?

1)秀丸でSQL文を開く。

2)名前を付けて保存で、エンコードの種類を「UTF-8」に変更し保存。

3)再度、秀丸を開くと文字化けしている部分もある。
  (主に中国語を扱っている部分)

よろしくお願いいたします。

補足日時:2009/11/10 13:11
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す