WordPressのデータをEUCからUTFへ移行したんだけど、うまく表示はしたものの、管理画面でログインすると、capabilities.phpのエラーが沢山出て、管理画面に入れないし、投稿も出来なくなってしまいました。

文字化けは、MySQLの文字セットや設定をUTFに指定することで、解消したのですが、今回のエラーの解決には1日費やしました。

調べtみると、EUCでは漢字1文字が2byteに対し、UTFー8では3byteになっていて、文字列情報をserialize化されてMySQLのデータベースに格納されていること分りました。

ですので、この文字と文字列を計算したバイト数の整合がとれず、エラーとなっていたようです。

解決策としては、

  • WordPressのMySQLのデータを開きます。

  • wpーoptionのテーブルを開き、option_name=”wp_user_roles”を探します

  • その中のデータを編集します。

    この中に、”管理人”の箇所を見つけ、直前にs:6:になっているはずなので、この6を9に変更します。

    漢字1文字がUTF8では3byteでしたから、3×3=9と言うことです。

  • その他にも、作者や協力者の箇所があるので、同じように修正します。

これで保存すると、ログイン出来るようになるはずです。

phpmyadmin等を利用すると簡単です