ワードプレスMEで作成していたお客さんのホームページでコメントが反映されなかったり(原因不明)していたので、アップデートしようと思いながら、ただ単純にファイルを日本版に置き換えただけでは文字化けしてしまい、そのままになっていたのですが、このたび、少し時間をかけてやってみることにしました。
データベース(mysql)の文字コードがEUCだったMEからUTF-8の日本版に移行するには、データベースの文字コード変換がちょっと難しそうで面倒そうだったのですが、失敗したら再びMEに戻すくらいのつもりでやってみました。
まず、comments のテーブルから。
phpMyAdmin で文字コード変更する方法を調べたらよくわからなかったので、とりあえずエクスポートしてみました。
するとテキストエディタで開けるので、EUCをUTF-8(N)に変更して保存。再びデータベースにインポート。
「無効な句読点文字です。」とかのエラーメッセージでデータを書き換えられない。
ということで一旦データベースのデータを削除して再びインポート。今度は実行されたみたいです。
ホームページを開いて確認。コメントは移行できたようです。
効率的かどうかは別にして、そんな難しい作業でもなかったな。と思いながら、続いて投稿データ。 posts のテーブル。
そんなにデータは大きくないはずなのに、よくわからないエラーメッセージが出る。
エクスポートしたファイルを見てみたら、IDが昇順に並んでなかったので、並べ替えたりしながらやったり、データを小分けにしてみたり。
結局、インポートしたファイルが insert だったからデータを削除してからやればよかったのだとやっと気づく。
ようやくデータ移行完了。
ところが、ブログを確認してみると、比較的最近の投稿が反映されていない。
管理ページにもそれらの投稿が表示されない。
表示されないデータを削除して再びインポートしたり、文字コード変えてインポートしてみたりしてもやはり駄目。
データが壊れてるのかなんなのかわからず、エクスポートした posts.sql ファイルの表示されている投稿の行と表示されていない行の違いを見比べてみる。違いがわからない男。
とりあえず寝ることにしました。
次の日。
データベースには異常がないようなので、やはりもう一度、表示されている行とされていない行の違いを見比べてみることにしました。phpMyAdmin で。
すると、一番最後のほうの列で、post_type というところに post があるのとないのとの違いにやっと気づきました。(以前は表示されていた投稿なのに、その違いがあるのは不思議。)
再びエクスポートしてテキストエディタで post のない行に post を挿入していき、インポートすると、できました。
振り返ってみれば、やり方を間違えて時間がかかりましたが、やること自体はそれほど難しくなかったような気がします。
お金をいただいてホームページを作っている者としては恥ずかしい限りですが。