私は「BackWPup」 を使ってWordPressのファイルとデータベースのバックアップを定期的にとるようにしています。テーマやプラグインの大きな修正を行う前にバックアップを取っておけば、予期しないトラブルが起きても慌てなくて済みます。そんな頼もしいバックアッププラグインなのですが、先日バックアップデータを復元したときに困ったことが発生しました😓。
環境:BackWPup バージョン 3.7.0
「BackWPup」プラグイン
バックアップデータを復元すると投稿本文の絵文字が?マークに
上の画像を見てもらえると分かると思いますが、絵文字が?マークに置き換わってしまいました。一カ所でなくあらゆる絵文字がいたるところで!!BackWPupのDBバックアップファイル(***.sql)の中身を調べてみるとエキスポートしたファイルの中の絵文字が既に「?」に変換されてしまっていることが分かります。
更にBackWPupのDBバックアップファイル(***.sql)の中身を調べてみると character_set が怪しい
どのテーブルも CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci となっているのは確認できています。実際に絵文字として直接データベースのテーブルに保存できているので間違いなさそうです。
しかし、
SET NAMES
SET character_set_client
の箇所が ‘utf8’ となっているのは ‘utf8mb4’ であって欲しい。さて、どこの設定値を参照しているのでしょう?プラグインのソースコードを追っかけていくと…
wp-config.php の修正
wp-config.php の DB_CHARSET をどうやら参照しているようです。これとデータベースのテーブルのキャラクターセットが一致すれば問題は解消しそうです。以下の箇所を修正します。
・・・ /** Database Charset to use in creating database tables. */ define('DB_CHARSET', 'utf8mb4'); // define('DB_CHARSET', 'utf8'); から変更 ・・・
そもそもwp-config.php の DB_CHARSET はWordPressインストール前にデータベースのテーブルのキャラクターセットを指定するものです。そのため意図的に変更しないかぎりアンマッチになるはずがないのですが、当方ではインストール後にデータベースのキャラクターセットを変更していたのでこのようなアンマッチの状況になっていました😓。データ復元を行うまでは何も支障が無かったのでまったく意識していませんでした。
設定変更後にバックアップを行いBackWPupのDBバックアップファイル(***.sql)の中身を調べてみるとエキスポートしたデータ中の絵文字が保持されていました。
データインポート後 絵文字が復元できました。ばっちりです😃!!
ちなみに、当環境ではデータベースのテーブルのキャラクターセットに ‘utf8mb4’ を使用していたので上記の対応になりましたが、データベースのテーブルのキャラクターセットが ’utf8’ でしたら wp-config.php の DB_CHARSET も ’utf8’ ですね。なかなかデータベースのキャラクターセットを変更することはないので発生することも稀でしょうが、同じ症状に遭遇したなら確認してみてください。