人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

レンタルサーバを移行しようとしています。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で書いています。アプリケーションの修正など、必要になってくるでしょうか。こちらもアドバイス頂ければ幸いです。

●質問者: kablog
●カテゴリ:インターネット ウェブ制作
✍キーワード:23 AT EUC Manual MySQL
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● b-wind
●35ポイント

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 で設定しますが、動作未確認の為詳細はご容赦ください。

◎質問者からの返答

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

旧サーバ→新サーバ

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

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


2 ● b-wind
●35ポイント

MySQL4.1 以降であれば

SET NAMES 'ujis';

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

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

◎質問者からの返答

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ