故障排除

可帮助您诊断和纠正问题的故障排除信息。

您可以查阅 操作手册 → Neo4j 日志文件,以监控升级过程并验证其是否顺利进行。如果出现问题,以下已知的故障排除信息可以帮助您诊断和纠正问题。

常见问题解决方案

调用 dbms.upgrade 导致失败

upgradeResult 字段描述了哪些组件未能升级。

解决方案

要排查根本原因,可以尝试两件事

  • 调用更详细的命令版本 — dbms.upgradeDetails,它会返回一个包含底层抛出异常的消息。这可能不是根本原因,但可以帮助缩小范围。

  • security.logdebug.log 中查找描述性警告和错误。堆栈跟踪应有助于追查问题的根本原因。

尝试在不兼容的版本之间升级,例如从 Neo4j 3.5 迁移到 Neo4j 4.1

当检测到的 system 数据库版本过旧时,状态码将是以下之一

  • UNSUPPORTED_BUT_CAN_UPGRADE - 服务器关闭。

    解决方案

    配置 dbms.mode=SINGLE。这将启用 system 数据库模式的自动升级,因为当 dbms.mode=SINGLE 时,设置 dbms.allow_single_automatic_upgrade 默认为 true

  • UNSUPPORTED - 服务器关闭。

    解决方案

    无法直接升级,请先升级到受支持的中间版本。

当并非所有实例都已升级到新版 Neo4j 时调用 dbms.upgrade

  • 在仍运行旧版本的任何实例上调用 dbms.upgradeStatus 将返回 UNSUPPORTED_FUTURE

  • 这些旧实例将无法再授权用户。

  • 针对这些实例的所有查询都会导致错误。

    解决方案

    关闭、升级并重新启动实例以恢复服务。

dbms.upgradeStatus 的状态码

表 1. 系统组件状态
状态 描述 解决方案

UNINITIALIZED

未检测到此组件的子图。

需要初始化。

CURRENT

子图已是当前版本。

无需操作。

REQUIRES_UPGRADE

子图受支持,但版本较旧,需要升级。

运行 CALL dbms.upgrade()

UNSUPPORTED_BUT_CAN_UPGRADE

子图不受支持;此组件无法运行。

以单实例模式重启 Neo4j,以便在启动时升级此组件。

UNSUPPORTED

子图不受支持,因为它太旧;此组件无法运行。

降级 Neo4j,然后在再次升级 Neo4j 之前升级此组件。

UNSUPPORTED_FUTURE

子图不受支持,因为它是一个更新的版本;此组件无法运行。

升级 Neo4j。

© . All rights reserved.