レンタルサーバを移行しようとしています。Mysqlのデータ移行がうまくいかず、エラーが出てしまっているので、適切な移行の方法を教えて頂けないでしょうか。


・移行前サーバ version: 3.23.56 文字コードujis(EUC)
・移行後サーバ version: 4.0.27 文字コードutf8

移行前サーバでmysqldumpを行い、移行後サーバでmysqlコマンドに放り込むと、以下のエラーがでます。
----
ERROR 1064 at line 5054: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '1 int(11) NOT NULL default '0',
2 int(11) NOT NULL default '0

----

また、utf8で移行ができたとしても、Mysqlを利用するPHPはすべてEUCで書いています。アプリケーションの修正など、必要になってくるでしょうか。こちらもアドバイス頂ければ幸いです。

回答の条件
  • 1人3回まで
  • 登録:
  • 終了:2006/09/17 21:05:14
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:b-wind No.1

回答回数3344ベストアンサー獲得回数440

ポイント35pt

http://dev.mysql.com/doc/refman/4.1/ja/upgrading-from-3-23.html

ご自身で記述されているように、まず文字コードが違いますがこちらはどのように対処されていますか?

例として Perl を使用した変換方法を例示します。

$ perl -i.back -p -MJcode -e '$_=jcode($_,"euc")->utf8'

これは perl や Jcode モジュールのバージョンによっても変わってくるので確認してから実行してください。


また、PHP 自体の文字コードが EUC_JP との事ですが、基本的には内部コード自体も EUC_JP だと思われますので、DBへの入出力時すべてに文字コード変換が必要になります。

別解としては PHP 自体の文字コードも UTF-8 にしてしまい、INPUT/OUTPUT 時の文字コードを適宜変更することでアルゴリズム的な変換は最小限で済むかもしれません。

このあたりの設定は php.ini で設定しますが、動作未確認の為詳細はご容赦ください。

id:kablog

PHPのコード以外に、HTMLなども全てEUCなので、プログラムなどの変更は避けたいと考えています。

旧サーバ→新サーバ

へEUCまたはUTF8でデータを移行し、新サーバでPHPからMySQLのデータを呼び出す際にはEUCで読み込めれば最適なのですが、そのような都合の良い方法は無いのでしょうか。

MySQL4.1以降であれば、対応方法らしきものをマニュアルから見つけられたのですが。

2006/09/12 18:19:34
id:b-wind No.2

回答回数3344ベストアンサー獲得回数440

ポイント35pt

MySQL4.1 以降であれば

SET NAMES 'ujis';

とすることで希望の動作は得られると思いますが、MySQL4.0以前にはありません。

現時点の情報でもっとも変更を少なくする方法は、MySQL4.0の文字コードを'ujis'で運用することだけです。

id:kablog

レンタルサーバなので特権がないのですが、移行後のMySQLでujisで運用する方法はありますでしょうか?

2006/09/12 19:38:20

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません