サポート » インストール » WP6.0で絵文字を入力し記事を更新するとエラーになる

  • 解決済 Senri Miura

    (@senribb)


    コアサーバー(V)の新サーバーへのマイグレーションで、データベースが
    MySQL から、MariaDB 10.6 となりました。
    全てのDBのテーブルは、utf8mb4_unicode_ci になっているので、DBのコード体系には問題ないようです。

    しかし、この新サーバーにおいて、記事の中に絵文字を入力して、ブロックエディタで記事を更新すると、以下のエラーが表示され、記事の更新ができなくなりました。

    「更新に失敗しました。データベースの投稿を更新できませんでした。」

    なぜか、クラッシックエディタで絵文字を入力すると記事の更新はできるようです。

    以前のサーバーでは、ブロックエディタにおいて、普通に4Bコードの絵文字を含む記事の更新はできていました。
    試しに、一旦、DBのバージョンを 5.9.3 に下げてから、6.0 へ戻しても、この現象は治りませんでした。

    なお、wp-config.php は当然ながら、以前と同様以下の設定です。
    define( ‘DB_CHARSET’, ‘utf8mb4’ );

    また、PHP 7.4 の設定で、default_charset = “UTF-8” を “” や ”utf8mb4″ としても、ダメでした。

    この件に関して、コアサーバーのサポートにもコンタクトをとりましたが、対応はできないとの事で、詰まっております。
    現在、以前の記事が更新できなくなり、大変困っておりますので、何か対応方法をご存じの方、是非ご教授をお願い申し上げます。

10件の返信を表示中 - 1 - 10件目 (全10件中)
  • トピック投稿者 Senri Miura

    (@senribb)

    その後、phpMyAdmin でDBのテーブルを確認したところ、wp-posts が utf8mb3 に設定されていることを確認しました。
    どうやら、コアサーバー側でマイグレーションの作業をミスった模様です。
    取りあえず、utf8mb4 へのテーブル修正を試みます。(以下は、SQLの一例)

    ALTER TABLE wp_posts DEFAULT CHARACTER SET utf8mb4;

    • この返信は5ヶ月、 2週前にSenri Miuraが編集しました。
    トピック投稿者 Senri Miura

    (@senribb)

    WordPress の全テーブル(wp_posts,wp_postmetaなど)を utf8mb4_general_ci に変更しました。

    その後、投稿で絵文字を入力し、更新しても、相変わらず以下のエラーが出ます。
    「更新に失敗しました。データベースの投稿を更新できませんでした。」

    何か、他にやるべき手順がありますでしょうか?

    どなたか、ご教授願います。

    トピック投稿者 Senri Miura

    (@senribb)

    追伸

    WordPressの投稿で、絵文字入力を有効にするため、には、テーブルwp_postsのpost_contentカラムの照合順序を「utf8mb4_general_ci」に変更し「保存する」を選択すれば、対応するかもですが、コアサーバーの環境ではエラーとなり、変更ができませんでした。

    こんにちは、
    再現できました。
    DBに保存できないという事であれば、DBに保存されない形式でとりあえず対応するというのも一つの方法ではないかと思います。(filter, shortcode, css)

    shortcode

    
    
    add_shortcode('emoji','emoji');
    function emoji(){
    	return '😃';
    }
    

    (emojiに変換されていますが、実際は10進の値です)
    css
    https://www.amp-what.com/unicode/search/smile
    で10進をコピー
    そのままでは使えないので、個人的なものですが、content で使用できる形式に変換
    https://www.tenman.info/study/convert/index.php

    
    .emoji:before {
        content: '\1f603';
    }
    

    お役に立つかどうかわかりませんが、
    自分ならどうするかなという遊び事でごめんなさい

    • この返信は5ヶ月、 2週前にnobitaが編集しました。
    トピック投稿者 Senri Miura

    (@senribb)

    >>nobita 様

    ご返信ありがとうございます。
    参考にしたいと存じます。
    新規投稿でしたら、その方法も一考ですね。
    但し、残念ながら私のサイトは、4Bコードを多用しているため、以前の記事が更新できなくなっているのが致命的です。

    なお、クラッシックエディタでも絵文字入力は更新でエラーとなります(訂正)。
    また、phpMyAdminで確認したところ、WordPressのデータベースのコードは、 utf8mb4_general_ci ではなく、大半が utf8mb3_general_ci になっています。

    Web検索したところ、この問題は、私以外の方も直面しているようです。
    たぶん、MariaDB 10.6のコンフィグレーションに問題がありそうです。
    本日、コアサーバーのサポートが復旧を試みましたが、結果はNGでした。

    このまま復旧できないのならば、他サーバーへの移転を検討したいと思います。

    • この返信は5ヶ月、 2週前にSenri Miuraが編集しました。

    こちらの方法を試してみはどうでしょうか。
    https://planet-green.com/upgrade-wp-utf8mb4/1475

    コアサーバーの環境ではエラーとなり、変更ができませんでした。

    こちらの方法も、内部的には同じ(ALTER TABLE テーブル名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci)ことなので、変更できないと思われますが、もしかしたらということもあるので試してみる価値はあるかもしれません。

    トピック投稿者 Senri Miura

    (@senribb)

    >> ishitaka 様

    ご返信ありがとうございます。

    実は、その方法は既に試しておりまして、結果は、ダメでした。

    トピック投稿者 Senri Miura

    (@senribb)

    以下のブログを参考にし、DBを更新したところ、うまくいきました!

    https://oc-technote.com/mysql/phpmyadmin%20%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%20%E7%85%A7%E5%90%88%E9%A0%86%E5%BA%8F%E3%81%AE%E4%B8%80%E6%8B%AC%E5%88%87%E6%9B%BF/

    1.「phpmyadmin」にログイン⇒変更したいデータベース名を選択
    2.ヘッダーの「操作」タブを選択⇒「照合順序」と書かれている箇所を見る。
    3.照合順序で “utf8mb4_general_ci” を指定し「実行」をクリック

    私のスキル不足でしたが、テスト結果に問題がなければ、このスレッドはクローズします。

    トピック投稿者 Senri Miura

    (@senribb)

    トピック投稿者 Senri Miura

    (@senribb)

    自己解決になりますが、このスレッドはクローズさせて頂きます。

10件の返信を表示中 - 1 - 10件目 (全10件中)
  • このトピックに返信するにはログインが必要です。