故障排除

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

您可以查看运维手册 → 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_upgradetrue

  • 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。