Nextcloudの「データベースに一部のインデックスが欠落しています」という警告を修正する

Nextcloud の管理概要を開くと、「データベースにインデックスが不足しています」というメッセージが表示されます。この警告は、Nextcloud が既存のテーブルに新しいインデックスを随時追加する可能性があるため、アップグレード後に表示されることがあります。大規模なデータベースでは、インデックスが自動的に作成されるとは限りません。インデックスが不足していると、データベースクエリの速度が低下する場合があります。サポートされている修復方法は、組み込みocc db:add-missing-indicesコマンドを使用することです。

スキーマを変更する前に、正しい Nextcloud インストールに対してコマンドを実行していることを確認し、データベースのバックアップを作成し、Web サーバーのオペレーティングシステムのユーザーを使用してください。コマンドがそれをサポートするバージョンでは、提案された SQL をプレビューできます--dry-run。その後、修復を実行し、管理概要を再度確認してください。

警告の意味

データベースインデックスとは、データベースがテーブル全体をスキャンすることなく行を検索するのに役立つ構造です。Nextcloudとそのアプリは、使用するテーブルとフィールドにインデックスを定義します。新しいNextcloudリリースまたはアプリバージョンで、既存のインストールにまだ存在しないインデックスが導入された場合、管理ページに不一致が報告されることがあります。これはスキーマメンテナンスの警告であり、それ自体がデータベースの破損やユーザーファイルの欠落を意味するものではありません。

Nextcloud の管理マニュアルには、パフォーマンス向上などを目的としてインデックスを随時追加できることが記載されており、管理者は を実行するように指示されていますocc db:add-missing-indices。インデックスの追加には、特に大きなテーブルでは時間がかかる場合があり、データベースの負荷やロックの動作は、データベース エンジンやワークロードによって異なる場合があります。インスタンスがビジー状態の場合は、比較的負荷の低い時間帯に変更を計画してください。

修復を実行する前に

  • インストールパスとバージョンを確認してください。インストールoccスクリプトが格納されているディレクトリからコマンドを実行するか、スクリプトのフルパスを指定してください。
  • データベースのバックアップを作成してください。MariaDB /MySQL、PostgreSQL、またはSQLiteの通常のバックアップ手順に従ってください。バックアップが完了したこと、および復元方法を理解していることを確認してください。
  • HTTPユーザーを見つけてください。NextcloudのWebサーバーを実行しているアカウントを使用してください。一般的な例としては、www-dataDebianやUbuntu、apacheFedoraやCentOS、httpArch Linux、wwwrunopenSUSEなどが挙げられます。お使いの環境によっては異なる場合があります。
  • コマンドオプションを確認してください。Nextcloud 35の安定版管理マニュアルに記載されています--dry-run。インストールされているバージョンで認識されない場合は、そのバージョンのocc db:add-missing-indices --help出力結果を参照し、オプションが存在すると想定するのではなく、プレビューをスキップしてください。

公式バックアップガイドには、完全バックアップのために保持すべきデータベース、構成、データディレクトリ、およびその他のインストールコンポーネントが記載されています。このスキーマ操作では、少なくとも、ご使用のデータベースに適した手順を使用して、テスト済みのデータベースバックアップを作成してください。

ステップ1:Nextcloudのインストール環境でシェルを開きます。

従来の Linux インストールの場合、SSH でサーバーに接続し、Nextcloud ディレクトリに移動します。一般的な Ubuntu のパスは です/var/www/nextcloudが、ご使用のサーバーのパスを使用してください。

cd /var/www/nextcloud
sudo -E -u www-data php occ status

ステータス出力で、想定どおりにインストールされたインスタンスが識別されていることを確認してください。Webサーバーにシェルのデフォルトとは異なるPHPバイナリを使用する場合はphp、互換性のあるPHPバージョンをにも使用してくださいocc。HTTPoccユーザーとして実行することで、想定どおりのファイル所有権と権限が維持されます。

ステップ2:インデックスの変更をプレビューする

インストールされているリリースでサポートされている場合は、まずドライランを実行してください。

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

ドライランでは、SQL文を適用せずにプレビューします。出力結果を確認し、修復しようとしている欠落インデックスに関するものであることを確認してください。出力結果に見覚えのないテーブルまたはインデックスが表示された場合は、その正確な名前を記録し、関連するアプリケーションがインストールされ、最新の状態であることを確認してください。プレビューしたSQLをデータベースコンソールに直接貼り付けて、手っ取り早く処理しないでください。

ステップ3:不足しているインデックスを追加する

プレビューが予定されており、バックアップの準備が整ったら、ドキュメントに記載されている修復コマンドを実行します。

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

このコマンドはデータベーステーブルをチェックし、スキーマで定義されているものの現在のインストール環境では存在しないインデックスを作成します。処理が完了するまでお待ちください。大規模なデータベースでは、時間がかかる場合があります。スキーマの変更中は、処理を中断しないでください。Nextcloudのドキュメントによると、このコマンドはインスタンスがオンライン状態のまま実行できます。この特定の修復処理の前提条件として、メンテナンスモードは記載されていません。メンテナンス期間が必要な場合は、独自の変更管理プロセスに従ってください。

Dockerおよびその他のインストールタイプ

コンテナ化されたデプロイメントでは、occデータベースコンテナではなく、Nextcloudアプリケーションコンテナ内で実行してください。コンテナ名とサービス名は異なるため、デプロイメントを確認し、正しい名前に置き換えてください。Dockerコンテナ名がの場合nextcloud、パターンは次のようになります。

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

Docker Compose の場合、対応するパターンは ですdocker compose exec -u www-data <nextcloud-service> php occ db:add-missing-indices。パッケージ化されたデプロイメントの中には、専用のコマンドや別のコンテナユーザーを使用するものがあります。その場合は、該当するパッケージの指示に従ってください。他のユーザーの設定からコンテナ名をコピーする場合は、必ず確認してください。

コマンドが失敗した場合、または警告が消えない場合は

  • 権限が拒否されました。HTTPユーザーとインストールパスを確認してください。デプロイメントのドキュメントで特権ラッパーが明示的に要求されている場合を除き、root権限でコマンドを実行してこの問題を解決しないでください。PHPプロセスは通常、Webサーバーユーザーとして実行される必要があります。
  • データベース接続エラーまたはPHPエラー: Nextcloudのログ、データベースサービスの健全性、設定されているPHPのバージョン、およびコマンドの出力を確認してください。スキーマコマンドを再実行する前に、根本的な接続または実行時の問題を解決してください。
  • 重複キーまたは一意インデックスのエラー:処理を停止し、エラーメッセージ全文を保存してください。これは、一意インデックスの作成を妨げる競合する行が存在することを示している可能性があります。影響を受けるアプリとテーブルを特定し、アプリとNextcloudのバージョンを確認して、アプリのメンテナーまたはデータベースに精通した管理者にご相談ください。データ固有の診断とバックアップなしに、行を削除したりインデックスを削除したりしないでください。
  • 「コマンドが見つかりません」またはサポートされていないオプション:正しい Nextcloud インストール環境にいることを確認し、HTTP ユーザーとして確認してくださいphp occ list。php occ help db:add-missing-indices古いリリースでは、すべての新しいオプションが利用できない場合があります。
  • コマンドが正常に終了した後も、「管理概要を更新してください」という警告が表示されます。警告に表示されている正確なインデックス名とテーブル名を確認してください。複数のインデックスが欠落している、アプリのアップデートによって新しいインデックスが追加された、データベース操作が失敗した、またはこのコマンドで解決できなかったスキーマの不一致が発生している可能性があります。

インデックスの欠落と、列または主キーの欠落を混同しないでください。Nextcloud では、これらのスキーマ変更に関する個別のコマンド ( や など) がドキュメントdb:add-missing-columnsにdb:add-missing-primary-keys記載されています。管理者の警告またはバージョン固有のドキュメントで指示されている場合にのみ、別の修復を実行してください。

結果を確認する

  1. db:add-missing-indices終了とレポートの完了を待ってください。Done.
  2. 管理概要を再読み込みし、特定のインデックス欠落警告が消えていることを確認してください。
  3. もしそれが残っている場合は、闇雲に再実行するのではなく、そのテーブル名とインデックス名をコマンド出力と比較してください。
  4. Nextcloudのログとデータベースの状態を確認し、新たなエラーがないかチェックした後、通常のファイルアクセスと、影響を受けるテーブルを使用するアプリが正常に動作することを確認してください。
  5. インスタンスが正常に動作し、かつ保持ポリシーで削除が許可されるまで、バックアップを保持してください。

最新のコマンド構文については、Nextcloudデータベースおよびインデックスコマンドのリファレンスを参照してください。ユーザーおよびPHPの要件については、「occコマンドの使用」および「Nextcloudバックアップガイド」を参照してください。これらの安定版ページでは、2026年10月6日時点の最新マニュアルはNextcloud Server 35であると記載されています。パス、オプション、およびパッケージング手順は、他のリリースやデプロイメントタイプでは異なる場合があります。

コメントを残す

Nextcloudの「データベースに一部のインデックスが欠落しています」という警告を修正する

Nextcloudの「データベースに一部のインデックスが欠落しています」という警告を修正する

Nextcloudのデータベースインデックス不足警告を、公式のoccコマンドでクリアします。まずバックアップを作成し、変更内容をプレビューしてから修復を実行し、結果を確認してください。

Element WebでKeycloakを使用してシングルサインオン(SSO)を設定する方法

Element WebでKeycloakを使用してシングルサインオン(SSO)を設定する方法

Element Web 用の Keycloak SSO を設定するには、OIDC を Synapse に接続し、正確なコールバック URL を設定し、ユーザー クレームをマッピングし、ログアウトをテストします。

Zimbraの「LDAPサーバーが応答しません」起動エラーを修正する:実践的な復旧ガイド

Zimbraの「LDAPサーバーが応答しません」起動エラーを修正する:実践的な復旧ガイド

応答しないLDAPサーバーが原因で発生するZimbraの起動失敗を診断および修正する方法を学びましょう。これには、サービスチェック、DNS、ポート、証明書、LDAP URL、および復旧検証が含まれます。

ownCloud Infinite Scale 用の S3 オブジェクトストレージの設定方法

ownCloud Infinite Scale 用の S3 オブジェクトストレージの設定方法

ownCloud Infinite Scale向けに、s3ngドライバ、POSIXメタデータ、バケットポリシー、検証、および安全な本番環境チェックを使用して、S3互換のオブジェクトストレージを設定します。

Zimbraメールキューのバックログを修正する:Postfixを安全にフラッシュし、配信を確認する

Zimbraメールキューのバックログを修正する:Postfixを安全にフラッシュし、配信を確認する

Zimbra Postfixのバックログを検査する方法、延期されたメールと保留されたメールを識別する方法、安全なキューフラッシュを実行する方法、メッセージを削除せずに進捗状況を確認する方法を学びましょう。

Kopano Z-PushをActiveSyncモバイル同期用に設定する方法

Kopano Z-PushをActiveSyncモバイル同期用に設定する方法

Z-PushをKopanoと連携させて、ActiveSyncによるメール、連絡先、カレンダー、タスクの安全な同期を設定しましょう。バックエンドと展開方法を比較検討し、モバイル端末の設定を確認してください。

Jitsi Meetで「接続が切断されました」というエラーメッセージが表示される問題を修正する

Jitsi Meetで「接続が切断されました」というエラーメッセージが表示される問題を修正する

Jitsi Meetの接続切断に関するトラブルシューティングを、ブラウザ、モバイルデバイス、不安定なネットワーク、ファイアウォール、およびセルフホスト型サーバー向けの実用的なチェックリストで解説します。

Nextcloud Talkのビデオ通話品質とTURNサーバー接続を修正する

Nextcloud Talkのビデオ通話品質とTURNサーバー接続を修正する

Nextcloud Talkの通話品質のトラブルシューティング、coturnの設定、適切なポートの開放、ICE候補のテスト、TURNまたはHPBのどちらが適切な解決策であるかの判断を行います。

Nginxでカスタム要素Webクライアントをホストする方法

Nginxでカスタム要素Webクライアントをホストする方法

カスタムホームサーバー、HTTPS、キャッシュ、セキュリティヘッダーに加え、一般的なセットアップ上の問題に対する簡単なチェック機能を備えたElement WebをNginxにデプロイします。

BigBlueButtonプレゼンテーションアップロードエラー「サポートされていないファイルタイプ」を修正する

BigBlueButtonプレゼンテーションアップロードエラー「サポートされていないファイルタイプ」を修正する

BigBlueButtonの「サポートされていないファイル形式」表示エラーを修正するには、ファイル拡張子を確認し、実際のP​​DFをエクスポートし、別のファイルをテストし、管理者に連絡すべきタイミングを特定してください。