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

アップデート後に Nextcloud で「データベース エラー」例外が表示されるようになった場合は、nextcloud.logテーブルを変更する前に、まずデータベースのエラーを確認してください。最初にデータベースの接続を復元し、アップデートが途中で停止した場合は、アップデートを完了させてから、occ upgradeログに修復の必要性が認められた場合にのみ、ドキュメントに記載されている修復コマンドを使用してください。

実際の故障箇所を特定する

ブラウザに表示されるメッセージは症状であって、診断ではありません。NextcloudがMySQL/MariaDBまたはPostgreSQLに接続できない、データベースアカウントの認証が機能しなくなった、あるいはアプリケーションコードとスキーマのアップグレード段階が異なっているなどの可能性があります。Nextcloudの公式トラブルシューティングガイドでは、失敗したリクエストIDをサーバーログと照合することを推奨しています。

  1. 時刻、ブラウザのエラーメッセージ全文、および表示されたリクエストIDを記録してください。機密情報や個人情報を削除せずに、プライベートなログエントリを公開しないでください。
  2. 設定済みのデータディレクトリは にありますconfig/config.php。デフォルトのログファイルは ですdata/nextcloud.logが、カスタマイズされたデプロイメントでは別の場所にログが記録される場合があります。
  3. 通常のLinuxインストール環境では、最近のエントリを確認してから、データベースサービスのログを確認してください。実際のNextcloudパスに置き換えてください。
sudo tail -n 100 /var/www/nextcloud/data/nextcloud.log
sudo journalctl -u mariadb --since '30 minutes ago'

2番目のコマンドは、systemdでMariaDBを実行しているホストにのみ適用されます。その他の環境では、PostgreSQLのサービスログまたはコンテナログを使用してください。最後のスタックトレース行に頼るのではなく、例外SQLSTATEコードと最初のデータベース関連の原因を検索してください。

ログの手がかり最初の便利なチェック
SQLSTATE[HY000] [2002]データベースプロセス、ホスト名、ポート、ソケットパス、またはSQLiteファイルへのアクセス。解釈はドライバによって決定されます。
SQLSTATE[HY000] [1040]MySQL/MariaDBの接続枯渇とアクティブなセッション。
MySQL server has gone awayデータベースの再起動、切断、リソース負荷、およびサーバーログ。
認証またはアクセスが拒否されましたデータベースアカウント、パスワード、ネットワークアクセス、および権限。
テーブル、リレーション、または列が見つかりませんデータベースのアップグレードが完了したか、またインストールされたコードがそのスキーマと一致しているか。

最初の3つの例は、Nextcloudのドキュメントに記載されている一般的なエラーについて説明しています。テーブルが見つからないというメッセージは、テーブルを手動で作成する許可を意味するものではありません。まず、移行の失敗箇所を正確に特定してください。

修正を適用する前にインスタンスを保護してください

マイグレーションを再試行する前に、Nextcloudの設定とデータとともに、復元可能なデータベースのバックアップを保存してください。公式のバックアップ手順には、カスタムアプリやテーマが存在する場合も含まれます。バックアップが同じ時点のものであることを確認してください。コードのみのバックアップでは、部分的に変更されたデータベースを復元することはできません。

  • 可能な限り、特にデータベースの書き込みやアップグレードが行われる場合は、復旧期間中は同期処理やバックグラウンドジョブを一時停止してください。
  • 旧および新Nextcloudバージョン、データベースエンジン/バージョン、PHPバージョン、および更新方法を記録しておいてください。
  • データベーステーブルを削除したり、空のスキーマをインポートしたり、フォーラムから無作為にSQLを実行したり、複数パートのバックアップのうち1つのコンポーネントのみを繰り返し復元したりしないでください。

以下のコマンドは、一般的な Debian/Ubuntu インストール環境()を想定しており/var/www/nextcloud、www-dataWeb サーバーアカウントは です。occ適切な HTTP ユーザーとして実行してください。パッケージ、Docker、Snap、AIO、およびマネージドインストールでは、パスと実行方法が異なります。occコマンドのリファレンスでこれらの要件について説明しています。

移行前にデータベース接続を復元する

データベースサービスとNextcloudの接続設定を確認してください。

ログに接続拒否、到達不能なソケット、または利用できないサーバーが表示されている場合は、まず既存のデータベースサービスが実行されていることを確認してください。これらはホストレベルの代替チェックであり、無差別に実行すべきリストではありません。

sudo systemctl status mariadb
sudo systemctl status postgresql

別個のデータベース サーバーの場合は、DNS、ファイアウォール ルール、選択したポート、および Nextcloud アプリケーション ホストまたはコンテナからのネットワーク到達可能性も確認してください。、、、 を調べてください。構成パラメータ リファレンスconfig/config.phpには、ホスト名、ポート、および Unix ソケット構文の説明があります。 は、公開チケットや履歴に残るシェル コマンドに貼り付けないでください。dbtypedbhostdbnamedbuserdbpassword

デプロイ中にデータベースのパスワードが変更されたり、認証情報が変更された場合は、シークレット管理ワークフローを使用して不一致を修正してください。サーバーが接続数が多すぎると報告した場合は、容量変更を検討する前に、アクティブな接続と接続が蓄積している原因を調べてください。インデックスコマンドでは接続障害は解消されません。

アップデート後にランタイム互換性を確認してください

PHPまたはデータベースサーバーの同時アップグレードは、これまで正常に動作していたインストール環境を破損させる可能性があります。現在インストールされているすべてのドライバおよびサーバーバージョンが引き続きサポートされていると想定するのではなく、対象となるNextcloudリリースを公式のシステム要件およびリリースノートと比較してください。確認済みのNextcloud 35ドキュメントでは、PHP 8.3~8.5がサポートされています。対応データベースバージョンは別途ドキュメントに記載されています。以前のリリースでは、制限が異なります。

また、選択したエンジンに必要なPHPデータベースドライバが、コマンドライン環境とWeb PHP環境の両方で有効になっていることを確認してください。スキーマ移行後にデータベースサーバーを安易にダウングレードしないでください。互換性のある一貫性のあるバックアッププランからのみ復元してください。

中断された Nextcloud のアップグレードを完了または修復します。

データベースにアクセス可能になり、バックアップが確保されたら、Nextcloudのインストールディレクトリに移動して、その状態を確認してください。

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

Nextcloudがアップグレードが保留中または未完了であると報告した場合は、インストールされているソースバージョンとターゲットバージョンでサポートされているアップグレードパスに従ってください。従来の手動インストールの場合、次のコマンドを実行します。

sudo -E -u www-data php occ upgrade

コマンドの実行を中断したり、アップグレード処理を同時に実行したりしないでください。出力結果を確認してください。移行が成功した場合とデータベース接続例外が発生した場合では、状況が異なります。Nextcloud の手動アップグレードに関するドキュメントでは、occ upgrade Web ベースのプロセスが停止した場合、およびmaintenance:repairアップグレード パスの修復が必要な場合について、以下の手順を明示的に推奨しています。

sudo -E -u www-data php occ maintenance:repair

maintenance:repair障害を分析した後で使用してください。これは、認証情報の誤り、停止したデータベース、または互換性のないランタイムの修正の代わりとなるものではありません。occ upgrade特定のSQL移行で失敗した場合は、正確な例外を保存し、バージョン固有の修正を探すか、手動でDDLを試すのではなく、一致する完全なバックアップを復元してください。

スキーマ警告は、アップグレードが正常に完了した後にのみ処理する。

一部の移行は意図的に延期されます。稼働中のインスタンスでは、管理画面の概要でオプションの列、インデックス、または主キーを指定するよう求められる場合があります。以下のコマンドは、該当バージョンでサポートされている場合に、ドライランのプレビューを提供します。

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

--dry-runログに記録された問題または管理チェックで要求され、かつ提案された変更がレビューされている場合にのみ、対応するコマンドを実行してください。これらのメンテナンス操作は、大規模なデータベースでは時間がかかる場合があります。Nextcloud 35db:schema:checkでは、さらにドキュメント化されています。古いブランチには存在しないものと想定してください。バージョン固有の動作については、データベースコマンドのリファレンスを参照してください。

復旧を確認し、アクセスを再開する

  1. 繰り返しますsudo -E -u www-data php occ status。インストールされているバージョンが意図したリリースと一致していること、アップグレードが不要であること、および新たな致命的なSQL例外が発生していないことを確認してください。
  2. メンテナンスモードがまだ有効で、アップグレードが正常に完了している場合は、で無効にしますsudo -E -u www-data php occ maintenance:mode --off。
  3. WebGUIを開き、サインインしてファイル一覧を表示し、認証済みの小規模なアップロードとダウンロードを実行します。nextcloud.logこれらのチェック中に、データベースに新たな例外が発生していないか監視してください。
  4. スケジュールされたジョブとクライアント同期を再開し、その後、管理設定を確認して、残っているデータベース警告がないか確認してください。

同じデータベース例外が繰り返し発生する場合は、繰り返し実行されるマイグレーションを停止し、リクエストID、SQLSTATEテキスト、データベースサーバーログ、バージョンペア、および失敗したocc出力を収集してください。これらの情報に基づいて、残りの問題が接続性、互換性のないソフトウェア、または特定のマイグレーションの失敗のいずれであるかを判断します。ログインが成功しただけでは、すべてのバックグラウンドタスクとデータベースクエリが正常に動作しているとは言えません。

コメントを残す

ストレージを壊さずに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サーバーに過負荷をかけることなくキューを検証します。

Nextcloudデスクトップ同期で「ファイルの処理中」を解消しましょう

Nextcloudの同期を妨げているファイル、除外ルール、接続の問題、またはクライアントデータベースの状態を特定し、アップロードとダウンロードが安全に行われることを確認します。

適切な制限値を調整して、Nextcloud OPcache の警告を解消する

Nextcloudの警告を引き起こしているPHP OPcacheの制限値を特定し、適切なWeb PHP設定を更新し、安全に再起動して、結果を確認してください。

NextcloudをCODE Dockerに接続する:セットアップとトレードオフ

NextcloudをCODE Dockerに接続する:セットアップとトレードオフ

組み込みのCODEとDockerベースのCODEを比較し、安全なHTTPSリバースプロキシを介してCollabora OnlineをNextcloudに接続します。

Galeraを使用して、回復力の高いNextcloudクラスターを構築する

共有ストレージ、Redisロック、クォーラム対応MariaDBルーティング、および実用的なフェイルオーバーチェックを備えた、信頼性の高いNextcloud HAデプロイメントを計画します。