在 Nextcloud 中,手动升级应用是常见的操作之一。特别是当 Nextcloud 系统要求执行 upgrade 命令时,理解正确的操作顺序至关重要。本文将介绍如何手动升级 News 应用,并分享如何避免在升级过程中出现代码完整性检查失败的问题,同时解决新出现的数据库索引缺失问题。

问题的根源

在升级过程中,Nextcloud 会进行代码完整性检查,确保所有文件都没有被篡改或丢失。如果操作顺序不当,尤其是在备份和删除旧应用目录时,可能会导致完整性检查失败。这种情况通常发生在未先删除旧版本文件的情况下,导致系统检测到不匹配的文件。

正确的操作顺序

为了顺利完成 News 应用的手动升级,并避免完整性检查失败,建议按照以下步骤操作:

  1. 备份现有的应用文件夹
    在升级之前,首先备份现有的 News 应用文件夹。这有助于防止万一升级失败时丢失数据。执行以下命令: mv /path/to/nextcloud/apps/news /path/to/nextcloud/apps/news_backup_$(date +%F-%H%M)
  2. 删除旧的备份文件夹
    为了避免冗余文件影响升级,最好在升级前删除任何不再需要的备份目录。例如,删除旧的 news 备份文件夹: rm -rf /path/to/nextcloud/apps/news_backup_2025-07-20-1813
  3. 上传并解压新的应用包
    上传下载的应用包到 apps 目录并解压: mv /path/to/workspace/news.tar.gz /path/to/nextcloud/apps/ tar -xzvf news.tar.gz rm news.tar.gz
  4. 更改文件权限
    更改新解压应用文件夹的权限,确保 Nextcloud 可以访问这些文件: chown -R www-data:www-data news
  5. 执行 Nextcloud 升级
    执行升级命令,以确保所有应用和数据库结构都已更新: sudo -u www-data php /path/to/nextcloud/occ upgrade
  6. 启用新的应用
    升级完成后,启用 News 应用: sudo -u www-data php /path/to/nextcloud/occ app:enable news
  7. 检查系统状态
    确保系统退出维护模式,并且所有更新已生效: sudo -u www-data php /path/to/nextcloud/occ maintenance:mode --off sudo -u www-data php /path/to/nextcloud/occ status

遇到的新问题:缺失数据库索引

在升级过程中,可能会出现以下错误提示:

Detected some missing optional indices. Occasionally new indices are added (by Nextcloud or installed applications) to improve database performance. Adding indices can sometimes take awhile and temporarily hurt performance so this is not done automatically during upgrades. Once the indices are added, queries to those tables should be faster. Use the command occ db:add-missing-indices to add them.
Missing indices: "news_feeds_deleted_at_index" in table "news_feeds"
For more details see the documentation ↗.

这表示某些数据库表中缺少索引,特别是 news_feeds 表中的 news_feeds_deleted_at_index 索引。虽然缺少这些索引不会阻止系统运行,但它会影响查询效率,因此需要手动添加这些缺失的索引。

解决方案:添加缺失的数据库索引

根据提示,您可以通过运行以下命令来修复缺失的索引:

sudo -u www-data php /path/to/nextcloud/occ db:add-missing-indices

这条命令会扫描数据库并自动添加缺失的索引,提升数据库的查询效率。

总结

手动升级 Nextcloud 的 News 应用并不复杂,但操作顺序至关重要。首先备份并删除旧的应用文件夹,上传并解压新版本的应用包,然后执行升级命令。确保操作顺序正确可以避免出现完整性检查失败的问题。

此外,升级完成后,可能会出现缺失数据库索引的提示。通过执行 db:add-missing-indices 命令可以解决这些问题,提升系统的数据库性能。

通过合理的操作顺序和适当的数据库优化,能够确保 Nextcloud 升级过程顺利完成,系统始终保持最新并稳定运行。

Leave a Reply

Your email address will not be published. Required fields are marked *