故障排除

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

您可以查看 操作手册 → Neo4j 日志文件 以监控升级过程,并确认在升级过程中没有出现任何问题。如果出现问题,以下已知的故障排除信息可以帮助您诊断并解决问题。

常见问题的解决方案

调用 dbms.upgrade 导致失败

upgradeResult 字段描述了哪些组件升级失败。

解决方案

要排查根本原因,可以尝试以下两种方法:

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

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

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

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

  • UNSUPPORTED_BUT_CAN_UPGRADE - 服务器关闭。

    解决方案

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

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

© . This site is unofficial and not affiliated with Neo4j, Inc.