故障排除

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

您可以查阅操作手册 → 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.