清除 Nextcloud 缺少資料庫索引警告

若要清除 Nextcloud 的「資料庫缺少一些索引」警告,請occ db:add-missing-indices以 Web 伺服器使用者身分從正確的 Nextcloud 安裝目錄執行該命令。此指令會新增 Nextcloud 或已安裝的應用定義但資料庫中缺少的索引;根據目前的 Nextcloud 35 文檔,--dry-run該指令會在執行前預覽 SQL 語句。

Nextcloud風格的管理概覽,帶有琥珀色警告,提示資料庫缺少一些索引。
當 Nextcloud 偵測到其資料庫架構中缺少索引時,管理概覽中會顯示此警告。

警告的含義

資料庫索引是一種查找結構,它可以幫助資料庫在不掃描整個表的情況下查找行。 Nextcloud 及其應用程式有時會添加索引來提升查詢效能。升級後,這項工作可能會留給管理員,因為在大表上建立索引需要時間,並且在運行期間會影響效能。缺少索引的警告通常是維護提示,並不表示檔案或資料庫記錄已損壞。

Nextcloud 目前的資料庫指令參考文件描述db:add-missing-indices如何新增預期架構中存在但目前安裝中缺少的索引。目前手冊也--dry-run提供了 SQL 語句預覽的文件。具體的索引取決於您的 Nextcloud 版本和已安裝的應用程式。

準備伺服器

  • 確認是哪個 Nextcloud 實例顯示警告,尤其是在您管理測試環境和生產環境或多個容器的情況下。
  • 請確保存在最新的資料庫備份,並且您知道如何還原它。此命令會更改資料庫結構。請勿手動編輯或刪除索引來代替此操作。
  • 建議在資料庫負載合理時執行此命令。根據 Nextcloud 的升級指南,伺服器可以在此操作期間保持在線,但對大型表進行索引可能需要一些時間,並會暫時影響回應速度。
  • 尋找 Nextcloud 的安裝目錄、Web 伺服器使用的 PHP CLI 版本以及 Web 伺服器的作業系統帳戶。該帳戶通常www-data位於 Debian 或 Ubuntu、apacheFedora 或 CentOS 以及httpArch Linux 上。

Nextcloud 的OCC 指南解釋說,occ它是伺服器的命令列介面,必須以 HTTP 使用者身分執行,以確保檔案所有權和權限的一致性。www-data如果您的安裝使用了不同的帳戶,請勿盲目使用。

預覽並添加缺少的索引。

對於 Debian 或 Ubuntu 上的標準歸檔安裝,請在 Nextcloud 伺服器上開啟 shell 並切換到包含該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 終端機顯示了帶有 dry run 選項的 Nextcloud OCC missing-index 命令。
使用文件中提供的試運行選項,在進行資料庫變更之前檢查 SQL。

準備好應用更改後,運行命令時無需添加冒號--dry-run:

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

Nextcloud 會檢查相關表格並報告進度。請讓它完成;不要因為處理大表的時間超出預期就中斷該過程。升級手冊將此命令列為可以在實例保持在線狀態下運行的耗時較長的架構任務之一,因此通常情況下,您無需為此修復啟用維護模式。請避免在修復過程中同時進行其他資料庫維護操作。

Linux 終端機顯示 missing-index 命令正在檢查檔案快取表,並顯示「完成」。
此指令檢查資料庫表,完成後返回 shell。

如果 Nextcloud 運行在 Docker 中

請在 Nextcloud 應用程式容器中運行,而不是在單獨的資料庫容器中運行。對於以常用帳戶occ命名的容器,通常的命令是:nextcloudwww-data

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

替換nextcloud為您的應用程式容器的實際名稱。如果您的鏡像或部署使用了不同的容器使用者、PHP 二進位檔案或命令包裝器,請遵循該鏡像的文檔,並確保命令以 HTTP 使用者身分執行。

確認警告已消失

命令執行完畢後,刷新“管理設定”>“概覽”。 Nextcloud 的檢查識別到索引後,「缺少索引」訊息應該會消失。您也可以重新運行該命令;這次應該無需再次添加相同的缺失索引即可完成。這確認了架構檢查已完成,但並不能衡量資料庫的整體效能。

Nextcloud 風格的管理概覽不再顯示缺少索引的警告
命令執行完畢後,刷新管理概覽,並檢查資料庫警告是否已清除。

如果警告仍然存在

  1. 請確認您是在出現警告的同一個 Nextcloud 安裝和資料庫上執行了該命令。常見的錯誤是在維護容器、測試執行個體或資料庫容器中執行該命令。
  2. 請檢查命令是否以正確的 Web 伺服器使用者身分執行,以及是否使用了與 Web 伺服器相同的 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 的 Web 上傳限制提高到 2 GB 以上

將 Nextcloud 的 Web 上傳限制提高到 2 GB 以上

透過調整 PHP、Nginx 或 Apache、暫存和逾時設置,讓 Nextcloud 瀏覽器上傳更大的文件,並驗證是哪個限制阻止了文件上傳。

清除 Nextcloud Web 伺服器上的 PHP 記憶體警告

設定 Nextcloud 實際使用的 PHP 記憶體限制,重新啟動對應的服務,並在管理概覽中確認 512 MB 設定。

將 S3 相容存儲桶連接到 Nextcloud 外部存儲

使用 Nextcloud 的 S3 後端,透過正確的端點、憑證、存取範圍和驗證步驟,掛載相容的物件儲存桶。

將 Nextcloud 資料遷移到外部磁碟機而不破壞存儲

將 Nextcloud 資料遷移到外部磁碟機而不破壞存儲

使用持久 UUID 掛載、維護模式、已驗證的副本和原始路徑符號鏈接,安全地將 Linux Nextcloud 資料目錄移至外部驅動器。

Nextcloud 資料庫更新後出現錯誤:我該先檢查什麼?

透過診斷 SQL 錯誤、檢查資料庫連線並安全地完成中斷的遷移,在更新後恢復 Nextcloud 存取。

使用 OCC 重設遺失的 Nextcloud 管理員密碼

使用 Nextcloud 的 OCC 命令從伺服器 shell 重設管理員密碼,並提供有關使用者名稱、權限和外部登入提供者的指導。

在為 Nextcloud 提供服務的 HTTPS 端點新增 HSTS 標頭

透過在 Apache、NGINX 或 TLS 代理程式上設定標頭來清除 Nextcloud 的 HSTS 警告,然後安全地驗證公共 HTTPS 回應。

排查 Nextcloud 應用程式安裝後報告無網路連線的問題

排查 Nextcloud 應用程式安裝後報告無網路連線的問題

追蹤 App Store 安裝失敗是否由 DNS、HTTPS、代理、TLS 或 Nextcloud 伺服器本身的設定問題所引起。

使用定時佇列來控制 Nextcloud 預覽版 CPU 峰值

將縮圖製作移至受控的後台計劃,修剪未使用的預覽尺寸,並在不使 Nextcloud 伺服器過載的情況下驗證佇列。