WordPress移設で注意するDB文字セット

wordpress_logo

Digital Dream WorksからHigaです。
業務でWordPressの移設をすることがしばしばあるので、よく忘れてしまうDB文字セットについてメモしておきます。

WordPress移設の際、 SQLデータをインポートすると「Unknown collation: ‘utf8mb4_unicode_ci’」ということでDB移設ができない場合があります。
これはWordPress4.2よりデフォルトのデータベースの文字セットがutf8からutf8mb4に変更されたことがひとつの原因です。

utf8:1文字を3バイトで構成
utf8mb4:utf8の拡張版のようなもの(1文字を4バイトで構成、今までの文字に追加の文字セットが使える)

ということで、utf8mb4はutf8の拡張版で絵文字などの文字が追加されているようです。
WordPressの推奨とあってWordPressのアップデートの際に以下の条件がそろっていると自動で「utf8mb4_unicode_ci」に変更されるようです。

・現在utf8の文字セットが設定されている
・使用しているMySQLサーバーのバージョンが5.5.3もしくはそれ以上
・使用しているMySQLのクライアントライブラリーが5.5.3もしくはそれ以上の場合、又はmysqlndを使用している場合は5.0.9かそれ以上の場合

照会順序はいつも「utf8_general_ci」にしてるけどな…って思ったらそういうことでした。

さて移設先の環境がどうしても「utf8mb4_unicode_ci」を利用できないこともあります。
その際にはSQLを修正してあげる必要があります。

SQL文で直接置換する方法などもあるようですが、
自分はphpMyAdminなどを利用して SQL文エクスポート、修正、インポートする方法で変更を行ないます。
SQLデータのバックアップがテキストで出力されるのは、何となく安心出来ます。

1. SQL文をエクスポートしてバックアップ
2. テキストエディタで開いて、「utf8mb4_unicode_ci」を「utf8_general_ci」に置換
3. 「utf8mb4」を「utf8」に置換
4. wp-config.php内にあるcharsetの文字コードを確認して「utf8mb4」なら「utf8」に書き換え
5. それぞれをインポート、アップで完了

ざっくりと書きましたが、この手順はGoogleで検索すればたくさんの記事がありますので参考にして下さい。
というわけセキュリティー的にも出来るだけMySQLもアップデートしていくことがベストですが、
サーバー環境(PLESK等)や他システムの兼ね合いでどうしてもMySQLのバージョンがあげられないサーバーへの移設はこの方法で回避できます。

稼働中サーバーのMySQLのバージョンアップなどは怖くて気が引けます。
自分が会社に入りたての頃は依存関係などでサーバー全体がおかしくなったりと大変だったような覚えがあります。
今ではある程度安心して MySQLやPHPなどのアップデートは行えるのでしょうか…
ご意見などコメントいただけると幸いです m(_ _)m
それでは!