2010年9月13日月曜日

EC-CUBEでphpmyadmin内だけ文字化けしている場合の対処法

EC-CUBEの再インストールしなくて済んだし、簡単に修正できたのでメモ!
(EC-CUBEバージョンは2.4.3時)


下記を実行する場合はもちろん自己責任。
さらに注意点があるので実行するには、最後まで一通り見てからで。



・ルート権限など無い。
・コマンドが使えない。
・サイトはすでに稼働中で問題ない。
・mysqlは別サーバー

共有サーバーでこんな感じ。

phpmyadminだけは文字化けしているんで
ちょいとしたカスタマイズ時データ見れないとか気もし悪いし、
phpmyadminでバックアップできない(文字化けしている)のも嫌だったんで
修正に踏み切った次第。


1.
前エントリのmysqldump.php version 1.02をつかってまるっとsqlでデータを書き出す。mysqldump.php version 1.02
必要ならcsvも保管しておいたほうが無難。

phpmyadminだと文字化けするのだが、コレで書き出すとutf8でエクスポートできた。


2.
phpmyadminにて全テーブルのデータを空にする。
(テーブルを消してはダメ)

3.
phpmyadminにて先に書き出したファイルをインポート。


4.
FTPにてEC-CUBEのサーバーで
/data/class にある SC_DbConn.php をダウンロード。

66~68行目のコメントを外す。(EC-CUBEバージョンは2.4.3時

//MySQL文字化け対策(MySQLで文字化けする場合は以下のコメントアウトをはずして動作確認してみてください。)
if (DB_TYPE == 'mysql') {
$objDbConn->query('SET NAMES utf8');
}
修正後アップロード。サイトをチェックして文字化けしてないか確認。

以上。


超簡単。



といきたいところだけど1点注意点が。。

mtb_zipテーブル(郵便番号検索用の住所データ)があるんだけど、
これだけでおそらく20MBほどの容量があり、そのままだとphpmyadminでは受け付けてくれないはず。

運用時間が長い場合はこの他のデータもボリュームがあるかも。


なのでsqlファイルを開いて、こま切れに分割してアップロードしなければならない点。
下記のように途中、途中(1000行置き位に)insert into `mtb_zip` values をいれて
その前の行の最終はカンマ, をセミコロン;に変更。


・・・
('01204','078 ','0788349','ホッカイドウ','アサヒカワシ','トウコウ9ジョウ','北海道','旭川市','東光9条','0','0','1','0','0','0');

insert into `mtb_zip` values
('01204','078 ','0788350','ホッカイドウ','アサヒカワシ','トウコウ10ジョウ','北海道','旭川市','東光10条','0','0','1','0','0','0'),
・・・


あとはZip圧縮してできるだけサイズを減らしてインポートする。多分それでも2MBくらいはあるかな。
受け付けられない場合は、ファイル自体を分割してやるしか無い。


(コマンドが使えるならサーバーにアップして load data local infile にてCSVから読み込める。)
load data local infile "/filepath" into table mtb_zip fields terminated by ','enclosed by '"';


もしくは管理画面から 郵便番号DB登録にて登録する。
(ただうまくいったことがないのでわからず)
参考:郵便番号DB登録ができません



という具合。