商品のデータベースはそのまま利用するとのことで、まずはPleskのマイグレーションを利用して新しいサーバーにまるごと移転させたのだが、データベースの編集を行おうと"phpMyAdmin"で開くとデータだけが文字化けして読めない状態。(Webサイト上では正常に閲覧できる)
Pleskのマイグレーション時にデータベースの変換ミスかとおもいきや、オリジナルのサーバーにあるデータベースも既に文字化けしていた...。orz
調べてみると過去EC-Cubeのインストール時、そのままMySQLデータベースを利用すると格納する文字コードがLatin1になって文字化けしてしまう事があったもよう。(憶測)
いずれにしても既に構築されてしまったデータベースが文字化けしているものは直す以外手立てがない。
今回以降すべてrootでのコマンド作業です。
1)まずは既存のデータベースのダンプを作成。
※Pleskの場合データベースユーザーパスワードがLinuxのシステムとは別に管理されているため、通常のLinuxパスワード入力方法ではアクセスが出来ないので注意が必要です。
# mysqldump -u [db_user] -p`cat /etc/psa/.psa.shadow` [db_name] > [db_name].sql --default-character-set=latin1
2)書きだしたデータベースの文字コードを変換。
# perl -pi -e 's/latin1/utf8/' [db_name].sql
3)mysqlコマンドでデータベースの作り直し。
# mysql -u [db_user] -p`cat /etc/psa/.psa.shadow` mysql> drop database [db_name]; mysql> create database [db_name] default character set utf8; mysql> quit
4)作りなおしたデータベースに文字コードを修正したデータの読み込み。
# mysql -u [db_user] -p`cat /etc/psa/.psa.shadow` [db_name] < [db_name].sql
とりあえずこれで"phpMyAdmin"から閲覧するデータの文字化けは直りました。
ただ今度はWeb上で表示するのデータが文字化けしてしまう状態になってしまったので、EC-Cubeの設定で文字コード(utf8)を強制指定して回避しました。
参考になったサイト:EC-CUBEをMySQLで動かして文字化けが起こるとき(インディゴWEB研究室)
オリジナルのサイト構築時に既にしくじってたって事ですね...。
これで何とかWeb上でもphpMyAdmin上でも文字化けしないで閲覧できるようになりました。
0 件のコメント :
コメントを投稿