このブログはWordPressを使用していますが、最近最新版(6.7.2)にバージョンアップしたところ、👍のような絵文字や特殊文字を使った記事を作成し、保存しようとした際に『更新に失敗しました。 データベース内の投稿を更新できませんでした。』のエラーが発生するようになりました。

当初は「まぁいいか」と思って放置していたのですが、X(旧Twitter)からの埋め込み紹介を行った際に、Xユーザーさんが使っている絵文字でも同様のエラーが出ることに気づきました。
そのたびに手作業で削除するのは面倒なので、対策を講じることにしました。
まずはGoogle先生へお伺い
まずはエラーメッセージの文言で検索してみました。
すると、MySQLで使用している文字コードが関係していることが分かりました。
どうやら絵文字を使うには「utf8mb4」という文字コードに対応している必要があり、現在の「utf8mb3」から変更する必要があるようです。

utf8mb3:昔のMySQLの「utf8」は実は“3バイト”までしか扱えず、絵文字や一部の記号が使えないよ。
utf8mb4:「本物のUTF-8対応」。4バイトまで使えるので、絵文字や特殊文字もバッチリ使えるんだ。
同じようなことでトラブっている人がいろんな記事を書いていたんですが、データベース関連の知識が乏しいためか、対処法を見ても正直よく分かりませんでした(笑)。
そこで、サーバーにコマンドを投入するような方法は避け、ツールだけを使って対応することにしました。
きっと自分と同じような境遇の人もいると思うので、備忘録として残しておきます。
✅対策手順について
まず、素人ながらガッツリいろいろと調べてみましたが、内容に誤りが含まれている可能性もあります。
その点はあらかじめご了承ください。すべて自己責任でお願いいたします。
また、万が一に備えて、作業を始める前にデータベースのバックアップを取っておくことを強くおすすめします。
1.不要な情報を削除しておく

不要な情報が残っていると、思わぬエラーの原因になることがあるため、事前にデータベースをクリーンな状態にしておきます。
とはいえ、手作業での対応は避けたいので、今回は WP-Optimize というプラグインを使用します。
このプラグインは、WordPressの管理画面から
「プラグイン」 → 「新規追加」 と進み、「WP-Optimize」で検索してインストールします。
使い方はとても簡単で、WP-Optimizeの画面を開き、↑の画像のようにチェックを入れたうえで、
「最適化を実行する」 をクリックすれば完了です。
2.phpMyAdminでMySQLへログインする

当サイトはさくらのレンタルサーバを使用しているため、まずはサーバの管理画面にログインし、そこから phpMyAdmin にアクセスします。
3.wp_postsの文字コードを変更する

左ペインから wp_posts
テーブルをクリックすると、その内容が表示されます。
続いて、右側に表示される画面の上部にある 「構造」タブ をクリックします。

4.対象カラムのデフォルト値の変更
デフォルト値の値が、0000-00-00 00:00:00
になっているカラムをチェックして「(チェックしたものを)変更」をクリックします。
この画面では、post_date post_date_gmt post_modified post_modified_gmt
が変更対象のカラムです。

MySQLでは、日付・日時型(DATE
や DATETIME
)のカラムにデフォルト値として 0000-00-00 00:00:00
を設定することができるんだけど、これは非推奨、もしくはエラーの原因となることがあるよ。

この画面のようにデフォルト値を 1000-01-01 00:00:00
とし、「保存する」をクリックします。

1000-01-01 00:00:00
は MySQLにおける有効な最小日時 なので、OKな値だよ
5.テーブルオプション 照合順序 を変更する

「操作」タブをクリックし、テーブルオプション内の照合順序を、画面のようにutf8mb4_general_ci
にします。
次に、「すべてのカラムの照合順序を変更する」 にチェックを入れたうえで、「実行」 をクリックします。
正常に処理された場合、構造は以下の画面のようになると思います。


照合順序がutf8mb4_general_ci
となってるね!
phpMyAdminの操作はこれで終わりだよ。
6.wp-config.phpを編集する
MySQL側の対応が完了したので、次にWordPress側の設定を行います。
まずは、FTPソフトなどを使って自分のサーバーにログインし、WordPressをインストールしている**最上位のディレクトリ(ルートディレクトリ)**から、wp-config.php
ファイルをダウンロードします。
さくらサーバーを利用している場合は、管理画面にログインするとファイルマネージャーが使えるので、そちらを使ってダウンロードするのも便利です。
次に、wp-config.php
をテキストエディタで開き、以下のように文字コードに関する内容を変更します。
/** データベーステーブルのキャラクターセット (ほとんどの場合変更する必要はありません。) */
define('DB_CHARSET', 'utf8mb4');
/** データベースの照合順序 (ほとんどの場合変更する必要はありません。) */
define('DB_COLLATE', 'utf8mb4_unicode_ci');
編集し、保存したら元あった場所にアップロードします。
7.動作確認をしてみる
それでは、Wordpressのメニューから「新規」をクリックして、記事を書いてみましょう。

こんな感じで、絵文字などを入力してみます。

Windowsだったら Windows
+ .
とすると簡単だよ!
保存ボタンを押してエラーが出なかったら成功です。

📝 いかがだったでしょうか?
無事、絵文字ありの記事は書けましたか?
この記事が、誰かの助けになれば幸いです。
コメント