Nextcloudをアップデート後エラー「データベースにいくつかのインデックスがありません 」

2024-10-21

Nextcloudを29.0や30.0.1にアップデート後に管理画面にログインすると以下のエラーが表示されます。

・Nextcloud 29.0にアップデート時のエラー

「データベースにいくつかのインデックスがありません。
大きなテーブルにインデックスを追加すると、自動的に追加されないまでに時間がかかる可能性があるためです。
“occ db:add-missing-indices"を実行することによって、インスタンスが実行し続けている間にそれらの欠けているインデックスを手動で追加することができます。
インデックスが追加されると、それらのテーブルへのクエリは通常はるかに速くなります。
オプションのインデックス “oc_npushhash_di" がテーブル “notifications_pushhash"にありません
インストールガイド ↗を再確認して、 ログ にあるすべてのエラーや警告を確認してください。」

・Nextcloud 30.0.1にアップデート時のエラー

いくつかの欠落しているオプションのインデックスを検出しました。
データベースのパフォーマンスを向上させるために、(Nextcloudまたはインストールされたアプリケーションによって)新しいインデックスが追加されることがあります。
インデックスの追加には時間がかかり、一時的にパフォーマンスが低下することがあるため、アップグレード時には自動的には行われません。
インデックスが追加されると、それらのテーブルへのクエリが速くなるはずです。インデックスを追加するには、
`occ db:add-missing-indices` コマンドを使用してください。
インデックスが不足: “fs_name_hash" テーブル内の “filecache". 詳細については、ドキュメント↗を参照してください。

上記のエラーはNextcloudをインストールされているディレクトリに移動して「occ db:add-missing-indices」のコマンドを叩けばインデックスが追加され上記のエラーは解消します

1.Nextcloudが稼働しているサーバーにSSHでログインします

2.Nextcloudがあるディレクトリに移動します。ディレクトリは各環境にあわせてください

$ cd /var/www/html/nextcloud

3.occコマンドを実行します。私の環境ではApacheで動いているのでapacheユーザーで実行します。

# RHEL系(CentOS等)
$ sudo -u apache php occ db:add-missing-indices
Adding additional oc_npushhash_di index to the oc_notifications_pushhash table, this can take some time...
oc_notifications_pushhash table updated successfully.

# Ubuntu系
$ sudo -u www-data php occ db:add-missing-indices

4.自動でインデックスが追加され、管理画面に再度ログインするとエラーは解消されています