サーバ移転時のMySQLの移行方法(文字化け解決含)

2011年8月22日

■DBのエクスポート

MTの移転の時のエクスポート方法と同じやり方でやりましたが、
今回はutf-8への文字コード変換はやってません。
逆にインポートするときに、「ファイルの文字セット」を「ujis」にしました。

後からわかったことですが、EC-CUBEの1系は元々ujisベースなので変換がいらないようなのです!

■SC_DbConn.phpの書き換え
これをやらないと文字化けしてしまうので、必要な作業です。

場所は、

data/class/SC_DbConn.php

です。

<参考>
エロゲプレイ記 … EC-CUBEをインストールすると文字化けする人へ
http://drednote.blog92.fc2.com/blog-entry-52.html

data/class/SC_DbConn.phpの33行目、

$this->dsn = $dsn;

の行の次の行からに、以下2行を挿入する。

$buf = $objDbConn->prepare('SET NAMES eucjpms') ;
$objDbConn->Execute($buf) ;

上記のeucjpmsの部分は、データベースをujisで運用している人はujisに変更して欲しい。

てなわけで、自分の場合は以下のような表記を追加しました。

$buf = $objDbConn->prepare('SET NAMES ujis') ;
$objDbConn->Execute($buf) ;

ちなみにこの[SC_DbConn.php]のファイルがおかしくなってると
画面が真っ白になってしまうので、気をつけてください。
自分の場合はSETの前にスペース入ってて真っ白に(頭も真っ白…)
秀丸の文字色がちゃんとなってるかチェックしましょう…

上の記事、特記してないですが、[20070729]という日付から予想すると
たぶん1系についての記事だと思います。だから良かった!

また以下のページもちょっとヒントになりました。

phpMyadminでのMySQLの文字セット
http://oshiete1.goo.ne.jp/kotaeru.php3?q=2115039

日本語の表名、列名を使用する場合、MySQLのコマンドで、以下の入力が必要です。

SET NAMES SJIS

■2系仕様でうまくいかなかった分

これを見つける前に2系の文字化けの記事を見つけて、
いくつか試したのですが、こちらはうまくいかなかったです。

ECCUBEの文字化け
http://web-karakuri.com/archives/339

この場合は今回とは逆で、2系はutf-8ベースなので、
文字セットがeucベースのMysqlで、2系を使う場合の記述だと思われます。
ちなみに、1系のSC_DbConn.phpファイルにも上の記述が44行目あたりにあって、
試しましたが、もちろんダメでした。今から考えると納得!

サーバ会社からは、RV-3サーバで2系は使えないとずっと言われてたのですが、
もしかしたら上の方法でやれば使えたのかもしれませんね。
これから試すのはめんどいからやだけど・・・

EC-CUBE V2 UTF-8 で、文字化け
http://minnadepangya.at.webry.info/200803/article_5.html

こちらは、「.htaccess」の書き換えをすると500エラーになりました。
やっぱり根本的に1系と2系は作りが違うのだなぁと実感しました。

<参考>
RV-3シリーズ マニュアル > EC-CUBE > 01) EC-CUBE のインストール方法
http://www.rapidsite.jp/support/manual/rv3/e_312.html