迁移指南

APOC v.5 升级与迁移

有关如何迁移 Neo4j 数据库的信息,请参阅 Neo4j 迁移指南

升级或修补 APOC v.5

查看变更

请查看发布版本的更新日志,了解新版本中引入或更改的内容。

有关弃用、更新和新增功能的列表,也可以在此处找到。

从 Neo4j v.4.4 迁移数据库

数据库只能从 Neo4j v.4.4 迁移到 Neo4j v.5。

从 Neo4j 5 版本开始,APOC 已拆分为两个独立的存储库:

APOC Full 包(APOC Core + APOC Extended)不再提供。若要使用不受支持的 APOC Extended 过程和函数,请参阅 APOC Extended 存储库。

APOC 配置

从 APOC v.5 开始,neo4j.conf 不再支持 apoc.* 配置设置。所有配置设置都应放在 apoc.conf 中。它们也可以通过环境变量进行设置。

如果配置设置仍在 neo4j.conf 中且 server.config.strict_validation.enabled 设置为 true,数据库将无法启动。此外,请注意,如果禁用此设置,保留在 neo4j.conf 中的任何 apoc.* 设置将不会被读取,因此也不会生效。

APOC 触发器

将 Neo4j 从 v.4.4 迁移到 v.5 需要恢复备份。由于 APOC 触发器存储在 system 数据库上,它们不包含在备份中,因此不会与其余数据一起迁移。

因此,必须使用 apoc.trigger.install 过程重新创建所有触发器,并根据需要调整 apoc.trigger.stop

例如,在已经安装了现有 APOC 触发器的 Neo4j v.4.4 数据库中,可以运行以下查询(路由到 neo4j 数据库):

CALL apoc.trigger.list();
表 1. 结果
名称 (name) query selector params installed paused

"count-removals"

MATCH (c:NodesCounter) SET c.count = c.count + size([f IN $deletedNodes WHERE id(f)  0] SET time = $time)

{"phase":"after"}

{time: 1674218712858}

TRUE

FALSE

"count-relationships"

MATCH (c:RelationshipsCounter) SET c.count = c.count + size([f IN $createdRelationships WHERE id(f)  0])

{}

{}

TRUE

TRUE

上述触发器可以通过执行以下操作在 Neo4j v.5 数据库上重新创建(路由到系统 LEADER 数据库):

CALL apoc.trigger.install(
  'neo4j',
  'count-removals',
  "MATCH (c:NodesCounter) SET c.count = c.count + size([f IN $deletedNodes WHERE id(f) > 0] SET time = $time)",
  {phase: 'after'},
  {params: {time: 1674218712858}}
);

CALL apoc.trigger.install(
  'neo4j',
  'count-relationships',
  "MATCH (c:RelationshipsCounter) SET c.count = c.count + size([f IN $createdRelationships WHERE id(f) > 0])",
  {}
);

CALL apoc.trigger.stop('neo4j', 'count-relationships')

至此,APOC 触发器已成功迁移到您的新 Neo4j v.5 数据库。