WordPress6.2.2から6.3に更新後「DBの更新が必要」画面で出るエラーへの対応


当サイトのWordPressは、MariaDB/MySQLではなくSQLiteを使うプラグインwp-sqlite-dbを導入しています。
しばらくは問題なく動作していましたが、WordPress6.2.2から6.3への更新後に「DBの更新が必要」という画面で【更新】ボタンを押すと「このサイトで重大なエラーが発生しました。」と表示され、wp-adminが破損してしまいました。
今回の記事は本事象の解決方法について記載します。


WordPressのバージョンを一つ前の6.2.2に戻す

・サーバ側の「/docroot/wordpress/wp-admin/*」と「/docroot/wordpress/wp-includes/*」を削除
・ダウンロードしたバージョン6.2.2のWordPressを解凍し「wp-content/*」を削除
・バージョン6.2.2のWordPressでサーバ側のWordPressを上書き

この状態でいったん動作確認を行い、問題が無いことを確認します。

参考リンク ソロ学 WordPressを手動でダウングレードする方法。(FTP使用|プラグインなし)

「db_version」の確認

SQLite DB内の「db_version」を確認します。

/docroot/wordpress/wp-content/database >sqlite3 .ht.sqlite
SQLite version 3.39.3 2022-09-05 11:02:23
Enter ".help" for usage hints.

sqlite> SELECT option_name, option_value FROM wp_options WHERE option_name = 'db_version';
db_version|53496

この「db_version|53496」の数値が重要のようです。

WordPress本体をバージョン6.3に更新

上記確認後、wp-adminからバージョン6.3に更新します。
更新後、/docroot/wordpress/wp-includes/version.phpに記述されている「$wp_db_version」の値を確認します。
WP本体の更新に伴い、この値と上記DB内のoption_valueの値が不一致になると、前述の「DBの更新が必要」画面で本事象が発生するようです。

/docroot/wordpress/wp-includes >grep db_version version.php
 * @global int $wp_db_version
$wp_db_version = 55853;

SQLite DB内のdb_versionを書き換える

version.phpに記載されていたdb_versionの値(55853)でSQLite DB内のフィールドを更新します。

sqlite> SELECT option_name, option_value FROM wp_options WHERE option_name = 'db_version';
db_version|55853

UPDATE実行後、db_versionが55853に変更されたことを確認します。

sqlite> SELECT option_name, option_value FROM wp_options WHERE option_name = 'db_version';
db_version|55853

上手く更新出来ました。
ブラウザのキャッシュをクリアし再度wp-adminにアクセスします。
新しいWordPressが問題無く動作していれば、本事象は解消しているようです。

記者余談

サードパーティのプラグインではなくWordPress公式でSQLiteに対応すべく実装が進んでいるとのことで、公式対応版がリリースされた暁にはDBの中身を移行しなきゃ、という悩みを抱えています。まあなんとかなるでしょう・・
PHPしか動かないレンタルサーバやメモリが少ない環境でも動くようになると思うので導入のハードルも下がりそうですね。