Nextcloudのデータベースインデックスが見つからないという警告をクリアする

Nextcloudの「データベースにインデックスが不足しています」という警告を解消するには、occ db:add-missing-indices正しいNextcloudインストール環境からWebサーバーユーザーとして以下のコマンドを実行してください。このコマンドは、Nextcloudまたはインストール済みアプリによって定義されているものの、データベースに不足しているインデックスを追加します。また、最新のNextcloud 35のドキュメントによると、--dry-run実行前にSQLのプレビューが表示されます。

Nextcloud風の管理画面概要に、データベースにインデックスが不足していることを示すオレンジ色の警告が表示される。
Nextcloudがデータベーススキーマにインデックスの欠落を検出した場合、管理概要に警告が表示されます。

警告の意味

データベースインデックスは、データベースがテーブル全体をスキャンすることなく行を検索するのに役立つルックアップ構造です。Nextcloudとそのアプリは、クエリを改善するためにインデックスを追加することがあります。大規模なテーブルにインデックスを作成するには時間がかかり、実行中のパフォーマンスに影響を与える可能性があるため、アップグレード時にその作業は管理者に任される場合があります。インデックスが見つからないという警告は通常、メンテナンスを促すものであり、ファイルやデータベースレコードが破損していることを示すものではありません。

Nextcloudの最新のデータベースコマンドリファレンスでは、想定されるスキーマには存在するものの、現在のインストール環境には存在しないインデックスを追加する方法として説明されています。db:add-missing-indicesまた、最新のマニュアルでは、--dry-runSQLステートメントのプレビュー方法についても解説しています。具体的なインデックスは、Nextcloudのバージョンとインストールされているアプリによって異なります。

サーバーを準備する

  • 特にステージング環境と本番環境、または複数のコンテナを管理している場合は、どのNextcloudインスタンスに警告が表示されているかを確認してください。
  • 最新のデータベースバックアップが存在すること、および復元方法を理解していることを確認してください。このコマンドはデータベース構造を変更します。代替手段として、インデックスを手動で編集または削除しないでください。
  • データベースの負荷が妥当な時にコマンドを実行するように計画してください。Nextcloudのアップグレードガイドラインによれば、この操作中もサーバーはオンライン状態を維持できますが、大きなテーブルのインデックス作成には時間がかかり、一時的に応答速度に影響を与える可能性があります。
  • Nextcloudのインストールディレクトリ、Webサーバーで使用されているPHP CLIのバージョン、およびWebサーバーのオペレーティングシステムアカウントを確認してください。アカウントは、www-dataDebianまたはUbuntu、apacheFedoraまたはCentOS、およびhttpArch Linuxでよく見られます。

NextcloudのOCCガイドによると、occOCCはサーバーのコマンドラインインターフェースであり、ファイルの所有権と権限を一定に保つためにHTTPユーザーとして実行する必要があるとのことです。www-dataインストール時に別のアカウントを使用している場合は、安易にOCCを使用しないでください。

不足しているインデックスをプレビューして追加します。

Debian または Ubuntu に標準的なアーカイブをインストールするには、Nextcloud サーバーでシェルを開き、ファイルを含むディレクトリに移動しますocc。この例では を使用しています/var/www/nextcloudが、パスは異なる場合があります。

cd /var/www/nextcloud
sudo -E -u www-data php occ db:add-missing-indices --dry-run

ドライランでは、データベースを変更せずに実行されるSQLが出力されます。出力内容を確認し、想定どおりのメンテナンス操作であることを確認してください。この--dry-runオプションは最新のNextcloud 35マニュアルに記載されています。古いリリースでこのオプションが拒否される場合は、無作為にオプションを削除するのではなく、そのリリースのコマンドヘルプを確認してください。

Linuxターミナルに、ドライランオプション付きのNextcloud OCC missing-indexコマンドが表示されている。
データベースを変更する前に、ドキュメントに記載されているドライランオプションを使用してSQLを検査してください。

変更を適用する準備ができたら、コロンなしでコマンドを実行してください--dry-run。

sudo -E -u www-data php occ db:add-missing-indices

Nextcloud は関連するテーブルをチェックし、進行状況を報告します。処理が完了するまで待ち、大きなテーブルの処理に予想以上に時間がかかっているからといってプロセスを中断しないでください。アップグレード マニュアルでは、このコマンドはインスタンスがオンラインのまま実行できる時間のかかるスキーマ タスクの一つとして記載されているため、通常はこの修復のためにメンテナンス モードを有効にする必要はありません。実行中は、データベースのメンテナンスを同時に行わないでください。

ファイルキャッシュテーブルをチェックし、「Done」で終了するmissing-indexコマンドを表示するLinuxターミナル。
このコマンドはデータベーステーブルをチェックし、完了するとシェルに戻ります。

NextcloudがDockerで実行されている場合

occNextcloudアプリケーションコンテナ内で実行してください。別のデータベースコンテナ内では実行しないでください。nextcloud通常のwww-dataアカウント名でコンテナ名が付けられている場合、コマンドは通常次のようになります。

docker exec --user www-data -it nextcloud php occ db:add-missing-indices

をアプリケーションコンテナの実際の名前に置き換えてくださいnextcloud。イメージまたはデプロイメントで別のコンテナユーザー、PHPバイナリ、またはコマンドラッパーを使用している場合は、そのイメージのドキュメントに従い、コマンドをHTTPユーザーとして実行し続けてください。

警告が消えていることを確認してください

コマンドが完了したら、「管理設定」>「概要」を更新してください。Nextcloud のチェックでインデックスが認識されると、インデックス不足のメッセージは消えます。コマンドを再実行することもできます。同じ不足インデックスを再度追加する必要なく、処理が完了するはずです。これにより、スキーマチェックが追いついたことが確認できますが、データベース全体のパフォーマンスは測定されません。

Nextcloudスタイルの管理概要画面で、インデックスが見つからないという警告が表示されなくなりました。
コマンドの実行が完了したら、管理概要を更新して、データベースの警告が解消されているかどうかを確認してください。

警告が続く場合

  1. 警告が発生したのと同じ Nextcloud インストール環境とデータベースに対してコマンドを実行したことを確認してください。よくある間違いは、メンテナンスコンテナ、ステージングインスタンス、またはデータベースコンテナでコマンドを実行することです。
  2. コマンドが正しいウェブサーバーユーザーとして実行され、ウェブサーバーと同じPHPバージョンが使用されていることを確認してください。Nextcloudは、CLIのPHP設定が異なるとoccエラーが発生する可能性があると指摘しています。
  3. Nextcloud 35以降では、sudo -E -u www-data php occ db:schema:checkスキーマの差異を確認するために以下のコマンドを実行してください。現在のリファレンスでは、このチェックはバージョン35で追加されたとされています。それ以前のリリースでは、そのリリース向けに文書化されている診断ツールを使用してください。
  4. 不足しているインデックスがサードパーティ製アプリのものである場合、またはコマンドでエラーが発生した場合は、アプリのアップデートが利用可能な場合はアップデートし、Nextcloudのログとコマンドの出力を確認して、アプリのメンテナーまたはNextcloudサポートに正確なインデックス名とテーブル名を問い合わせてください。CREATE INDEXアプリまたはデータベースのメンテナーが、ご使用のスキーマに合ったステートメントを提供していない限り、手書きのステートメントは実行しないでください。

本番サーバーの場合、警告が解消され、アプリケーションが正常に動作するようになるまで、データベースのバックアップを保持してください。Nextcloudのアップグレード手順には、オンラインメンテナンス作業とオプションのドライランについて記載されています。

コメントを残す

Nextcloudのデータベースインデックスが見つからないという警告をクリアする

Nextcloudのデータベースインデックスが見つからないという警告をクリアする

NextcloudのOCC修復を安全に実行し、データベースの変更をプレビューして、警告が残る理由を確認してください。

Nextcloudのウェブアップロード制限を2GB以上に引き上げる

Nextcloudのウェブアップロード制限を2GB以上に引き上げる

PHP、Nginx、Apache、一時ストレージ、タイムアウトの設定を調整することで、Nextcloudブラウザからのより大きなファイルアップロードを可能にし、どの制限がファイルのアップロードを妨げているかを確認してください。

WebサーバーでNextcloudのPHPメモリ警告をクリアする

Nextcloudが実際に使用するPHPメモリの制限を設定し、該当するサービスを再起動して、管理画面の概要で512MBの設定を確認してください。

S3互換バケットをNextcloud外部ストレージに接続する

NextcloudのS3バックエンドを使用して、適切なエンドポイント、認証情報、アクセス範囲、および検証手順を設定し、互換性のあるオブジェクトストレージバケットをマウントします。

ストレージを壊さずにNextcloudデータを外部ドライブに移動する方法

ストレージを壊さずにNextcloudデータを外部ドライブに移動する方法

永続的なUUIDマウント、メンテナンスモード、検証済みコピー、および元のパスのシンボリックリンクを使用して、Linux Nextcloudのデータディレクトリを安全に外部ドライブに移動します。

Nextcloudのアップデート後に発生したデータベースエラー:最初に確認すべきこと

SQLエラーの診断、データベース接続の確認、中断された移行の安全な完了を行うことで、アップデート後にNextcloudへのアクセスを復元します。

OCCを使用してNextcloudの管理者パスワードをリセットする

NextcloudのOCCコマンドを使用して、サーバーシェルから管理者パスワードをリセットする方法を説明します。ユーザー名、権限、外部ログインプロバイダーに関するガイダンスも含まれています。

Nextcloudを提供するHTTPSエンドポイントにHSTSヘッダーを追加する

NextcloudのHSTS警告を解消するには、Apache、NGINX、またはTLSプロキシでヘッダーを設定し、公開HTTPS応答が安全に動作することを確認してください。

インターネット接続がないと報告されるNextcloudアプリのインストールに関するトラブルシューティング

インターネット接続がないと報告されるNextcloudアプリのインストールに関するトラブルシューティング

App Storeのインストール失敗の原因を、DNS、HTTPS、プロキシ、TLS、またはNextcloudサーバー自体の設定の問題に絞り込んでください。

スケジュールされたキューを使用して、NextcloudプレビューのCPUスパイクを抑制する

サムネイル作成作業を制御されたバックグラウンドスケジュールに移行し、使用されていないプレビューサイズをトリミングし、Nextcloudサーバーに過負荷をかけることなくキューを検証します。