故障排除
有助于您诊断和纠正问题的故障排除信息。
您可以查看 运营手册 → Neo4j 日志文件 以监控升级过程,并确认在升级进行期间没有出现问题。如果出现问题,以下已知的故障排除信息可以帮助您诊断并纠正问题。
常见问题的解决方案
调用 dbms.upgrade 导致失败
upgradeResult 字段描述了哪些组件升级失败。
- 解决方案
-
要排查根本原因,可以尝试以下两种方法:
-
调用该命令的更详细版本——
dbms.upgradeDetails,它会返回一条包含底层抛出异常的消息。这可能不是根本原因,但有助于缩小排查范围。 -
在 security.log 和 debug.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 的状态码
| 状态 | 描述 | 解决方案 |
|---|---|---|
|
未检测到该组件的子图。 |
需要初始化。 |
|
该子图已处于当前版本。 |
无需操作。 |
|
该子图受支持但版本过旧,需要升级。 |
运行 |
|
该子图不受支持;此组件无法运行。 |
以单实例模式重启 Neo4j 以在启动时升级此组件。 |
|
该子图因过旧而不受支持;此组件无法运行。 |
降级 Neo4j,然后在再次升级 Neo4j 之前升级此组件。 |
|
该子图因版本过新而不受支持;此组件无法运行。 |
升级 Neo4j。 |