データベース移行でWordPressの記事が文字化け
データベースのバージョンアップの際にWordPressの記事やコメントが文字化けする現象に見舞われました。原因が分からず丸一日つぶれました。同じ人が現れないように解決方法を紹介します。
まえがき
いや~ひさびさにはまりました。
丸1日!!!
しかも超くだらいことが原因だったという。
あ~思い出すだけでも悔しいが溢れてくる笑
何にはまってしまったかというと、まぁタイトルにも書いてありますが
データベースの文字化け
です。
WordPress2.7を3.8にアップデートするためにデータベースを5.0以上にする必要があるのですが、元々使用していたMySQL 4.0.24のデータベースのデータをMySQL 5.6にインポートすると何故かWordPressの記事の部分が文字化けするという現象です!!
それでは解決までの道のりを書いていこうと思います。
WordPress2.7はMySQLバージョン 5.0 以上だと動作しない??
KoToRi的にとりあえずWordPress2.7のままデータベースだけ最新バージョンのMySQL5.6に移行して、WordPressの自動アップグレードでWordPress3.8にアップグレードしようと思いました。
まずMySQL5.6のデータベースを用意して「wp-config.php」のデータベース設定のところをMySQL5.6の情報に変更して確認すると
データベース接続確立のエラー
と表示されました。
入力している情報は確実に合っているのですが何回やってもデータベース接続確立のエラーが出るのですぐ諦めました。
恐らく最新のMySQLでは古いWordPressは動かないのでしょう。ここはそんなに問題ではありません。
WordPressの記事やコメントが文字化け
しょうがないので別でWordPress3.8をインストールしてからデータベースのデータを移行しようと思いました。
とりあえずWordPress3.8の環境を作るところまでは問題なくできたのですが古いデータベースのデータをエクスポートして新しいデータベースにインポートすると
WordPressの記事やコメントが文字化けしてる
因みにKoToRi的に遭遇したくないトラブル第1位は「文字化け」です笑
気分は最悪でした。
文字化けの原因
まず大事なのはドコの工程で文字化けが発生しているかです。
古いMySQLバージョンから新しいバージョンのデータベースにデータをインポートして文字化けするというシチュエーションだったら一番に確認してほしいことがあります!!
それは
古いMySQLがphpMyAdmin上で文字化けしているか
です。
別にphpMyAdminじゃなくてもデータベースのインポートやエクスポートを行うツール上でそもそも文字化けしているか。ここを見落としがちです。
こういう症状の場合、どうしてもエクスポートの設定やインポートの設定に目が行きがちですよね。
でも、KoToRiの場合はこれが原因で丸1日はまりました。
そもそもphpMyAdminで文字化けして表示されている状態でエクスポートしても文字化けしたものが吐き出されるに決まってます笑
phpMyAdmin上で文字化けするとは
phpMyAdmin上で文字化けするとはどういう事かというとWordPressの場合は「wp_posts」のテーブルを見てもらうと分かりやすいかと思います。
phpMyAdminにログインしたらサイドバーから「wp_posts」のテーブルを選択して「表示」タブをクリックすると各記事の情報が表示されます。
確認すると文字化けしていますね。
phpMyAdmin上で文字化けする場合の解決方法
これは超気づきにくいのですが旧バージョンのphpMyAdminだとログインする時に文字コードを指定する項目があります。
WordPressの文字コードはUTF-8なので、EUCとかでログインすると文字化けしてしまいます。
今回の原因はここにありました。ほんとくだらない笑
日本語のUTF-8でログインしてください。
すると文字化けも解消され問題なくデータをエクスポートして、新しいデータベースにインポートできました!!
「TYPE=MyISAM」のエラーはありましたが。。。
データベースのインポートでエラー「TYPE=MyISAM」
まとめ
灯台下暗しといいますか、非常に悔しいです。こんなんで一日潰したことが笑
データベースあまり詳しくないし文字化けは遭遇したくないトラブル第1位で、その二つに圧倒されて判断力が欠如してしまったのかもしれません><
いつでも冷静に判断できるメンタルを持ちたいものですね。
ただ、こういったトラブルは、どの工程で異常が起きているのか順序よく考えていくというのが解決への一番の近道だなと感じました。
これを肝に銘じることができたということで、この件はよしとしましょう。