通知代码列表
以下页面提供了 Neo4j 中所有通知的概述,包括 GQLSTATUS 代码和 Neo4j 代码,以及一些场景及其可能的解决方案。
请注意,虽然 GQLSTATUS 代码保持稳定(任何更改都将是破坏性的),但与这些代码关联的状态描述的更改是非破坏性的,可能随时发生。因此,不建议解析状态描述或将其合并到脚本中。 |
PERFORMANCE
通知
当查询使用代价高昂的操作,并且可以通过更改查询或添加索引来提高性能时,会返回性能通知。
笛卡尔积
当计划中存在笛卡尔积时,会返回此通知。
Neo4j 代码 |
|
标题 |
此查询在不相连的模式之间构建笛卡尔积。 |
描述 |
如果查询的一部分包含多个不相连的模式,这将在所有这些部分之间构建笛卡尔积。这可能会产生大量数据并减慢查询处理速度。虽然偶尔是预期的,但通常可以通过重写查询来避免使用此交叉积,也许通过在不同部分之间添加关系或使用 |
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
info: 笛卡尔积。不相连的模式 |
分类 |
|
严重程度 |
|
- 查询
-
MATCH (c:Child), (p:Parent) RETURN c, p
- 返回的 GQLSTATUS 代码
-
03N90
- 返回的状态描述
-
info: 笛卡尔积。不相连的模式
(c:Child), (p:Parent)
构建笛卡尔积。笛卡尔积可能产生大量数据并减慢查询处理速度。 - 改进建议
-
如果需要笛卡尔积,则无法改进此查询。然而,在许多情况下,您可能不需要所有子节点和父节点的组合,这时可以改进此查询。例如,如果您需要子节点和子节点的父节点,可以通过将其重写为以下内容来改进此查询
MATCH (c:Child)-[:ChildOf]->(p:Parent) RETURN c, p
- 查询
-
MATCH (c:Child), (p:Parent) RETURN c, p
- 返回代码的描述
-
如果查询的一部分包含多个不相连的模式,这将在所有这些部分之间构建笛卡尔积。这可能会产生大量数据并减慢查询处理速度。虽然偶尔是预期的,但通常可以通过重写查询来避免使用此交叉积,也许通过在不同部分之间添加关系或使用
OPTIONAL MATCH
(标识符为: (p
)) - 改进建议
-
如果需要笛卡尔积,则无法改进此查询。然而,在许多情况下,您可能不需要所有子节点和父节点的组合,这时可以改进此查询。例如,如果您需要子节点和子节点的父节点,可以通过将其重写为以下内容来改进此查询
MATCH (c:Child)-[:ChildOf]->(p:Parent) RETURN c, p
无界可变长度模式
当未指定可变长度关系的上限时,会返回此通知。
Neo4j 代码 |
|
标题 |
提供的模式是无界的,请考虑为节点跳数添加上限。 |
描述 |
使用无界模式的最短路径可能会导致执行时间过长。建议为模式中的节点跳数使用上限。 |
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
info: 无界可变长度模式。提供的模式 |
分类 |
|
严重程度 |
|
- 查询
-
MATCH p=shortestPath((n)-[*]->(m)) WHERE n <> m RETURN p
- 返回的 GQLSTATUS 代码
-
03N91
- 返回的状态描述
-
info: 无界可变长度模式。提供的模式
(n)-[*]→(m)
是无界的。使用无界模式的最短路径可能会导致执行时间过长。请为模式中的节点跳数使用上限(例如[*..5]
)。 - 改进建议
-
如果您的图很大,此查询可能会非常慢。请考虑添加上限。
MATCH p=shortestPath((n)-[*..8]->(m)) WHERE n <> m RETURN p
- 查询
-
MATCH p=shortestPath((n)-[*]->(m)) RETURN p
- 返回代码的描述
-
使用无界模式的最短路径可能会导致执行时间过长。建议为模式中的节点跳数使用上限。
- 改进建议
-
如果您的图很大,此查询可能会非常慢。请考虑添加上限。
MATCH p=shortestPath((n)-[*..8]->(m)) RETURN p
穷举最短路径
当最短路径上给定的谓词需要检查整个路径才能决定其是否有效时,会返回此通知,最短路径可能会回退到穷举搜索算法。有关更多信息,请参阅 Cypher 手册 → 最短路径 - 路径上的附加谓词检查。
Neo4j 代码 |
|
标题 |
已为您的查询计划穷举最短路径,这意味着最短路径图算法可能不会用于查找最短路径。因此,为了找到请求的最短路径,可能会使用所有路径的穷举枚举。 |
描述 |
使用带有穷举搜索回退的最短路径可能会导致查询变慢,因为最短路径图算法可能不适用于此用例。建议引入 |
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
info: 穷举最短路径。由于存在谓词 |
分类 |
|
严重程度 |
|
- 查询
-
MATCH p = shortestPath(()-[*..42]-()) WHERE ANY(n in nodes(p) WHERE n:Label) RETURN p
- 返回的 GQLSTATUS 代码
-
03N92
- 返回的状态描述
-
info: 穷举最短路径。由于存在谓词
ANY(n in nodes(p) WHERE n:Label)
,查询使用穷举最短路径运行。可以通过使用WITH
将MATCH
与存在谓词分开。 - 改进建议
-
在
MATCH
子句后引入WITH
以分隔谓词。MATCH p = shortestPath(()-[*..42]-()) WITH p WHERE ANY(n in nodes(p) WHERE n:Label) RETURN p
- 查询
-
MATCH p = shortestPath(()-[*..42]-()) WHERE ANY(n in nodes(p) WHERE n:Label) RETURN p
- 返回代码的描述
-
使用带有穷举搜索回退的最短路径可能会导致查询变慢,因为最短路径图算法可能不适用于此用例。建议引入
WITH
来将包含最短路径的MATCH
与该路径上的存在谓词分开。 - 改进建议
-
在
MATCH
子句后引入WITH
以分隔谓词。MATCH p = shortestPath(()-[*..42]-()) WITH p WHERE ANY(n in nodes(p) WHERE n:Label) RETURN p
无适用索引
当使用 LOAD CSV
配合 MATCH
或 MERGE
子句匹配未索引的标签时,会返回此通知。这在大数据集上可能性能不佳。添加索引可以提高查询速度。
Neo4j 代码 |
|
标题 |
添加架构索引可能会加快此查询速度。 |
描述 |
在 |
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
info: 无适用索引。 |
分类 |
|
严重程度 |
|
LOAD CSV
配合 MATCH
或 MERGE
- 查询
-
LOAD CSV FROM 'file:///ignore/ignore.csv' AS line WITH * MATCH (n:Person{name:line[0]}) RETURN line, n
- 返回的 GQLSTATUS 代码
-
03N93
- 返回的状态描述
-
info: 无适用索引。
LOAD CSV
与MATCH
或MERGE
结合使用未索引的标签可能导致执行时间过长。请考虑为标签Person
添加索引。 - 改进建议
-
为您匹配的标签和属性创建索引。
CREATE INDEX FOR (n:Person) ON (n.name)
- 查询
-
LOAD CSV FROM 'file:///ignore/ignore.csv' AS line WITH * MATCH (n:Person{name:line[0]}) RETURN line, n
- 返回代码的描述
-
在
LOAD CSV
之后使用MATCH
或MERGE
匹配未索引的标签很可能在大数据集上性能不佳。请考虑使用架构索引。 - 改进建议
-
为您匹配的标签和属性创建索引。
CREATE INDEX FOR (n:Person) ON (n.name)
Eager 运算符
当查询的执行计划包含 Eager
运算符时,会返回此通知。
Neo4j 代码 |
|
标题 |
此查询的执行计划包含 Eager 运算符,这会强制所有依赖数据在继续之前在主内存中具象化。 |
描述 |
在执行计划包含 Eager 运算符的查询中使用带有大量数据集的 |
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
info: eager 运算符。查询执行计划包含 |
分类 |
|
严重程度 |
|
LOAD CSV
配合 Eager 运算符- 查询
-
LOAD CSV FROM 'file:///ignore/ignore.csv' AS line MATCH (n:Person{name:line[0]}) DELETE n RETURN line
- 返回的 GQLSTATUS 代码
-
03N94
- 返回的状态描述
-
info: eager 运算符。查询执行计划包含
Eager
运算符。LOAD CSV
与Eager
结合使用会消耗大量内存。 - 改进建议
-
有关更多信息以及如何避免问题的提示,请参阅 Cypher 手册 → Eager 运算符。在此特定情况下,查询可以重写为以下内容
LOAD CSV FROM 'file:///ignore/ignore.csv' AS line CALL { WITH line MATCH (n:Person{name:line[0]}) DELETE n } RETURN line
LOAD CSV
和 Eager 运算符一起使用会占用大量内存。
- 查询
-
LOAD CSV FROM 'file:///ignore/ignore.csv' AS line MATCH (n:Person{name:line[0]}) DELETE n RETURN line
- 返回代码的描述
-
在执行计划包含 Eager 运算符的查询中使用带有大量数据集的
LOAD CSV
可能会消耗大量内存,并且很可能性能不佳。有关更多信息以及如何避免问题的提示,请参阅 Neo4j 手册中关于 Eager 运算符的条目。 - 改进建议
-
有关更多信息以及如何避免问题的提示,请参阅 Cypher 手册 → Eager 运算符。在此特定情况下,查询可以重写为以下内容
LOAD CSV FROM 'file:///ignore/ignore.csv' AS line CALL { WITH line MATCH (n:Person{name:line[0]}) DELETE n } RETURN line
动态属性
Neo4j 代码 |
|
标题 |
使用动态属性的查询不会对这些属性使用索引查找或索引扫描。 |
描述 |
使用动态属性使得此查询无法使用索引查找 ( |
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
info: 动态属性。标签/类型 |
分类 |
|
严重程度 |
|
- 查询
-
MATCH (n:Person) WHERE n[$prop] IS NOT NULL RETURN n;
- 返回的 GQLSTATUS 代码
-
03N95
- 返回的状态描述
-
info: 动态属性。标签/类型
Person
上存在索引。动态属性无法使用索引。请考虑使用静态属性。 - 改进建议
-
如果
(n:Person) ON (n.name)
有索引,它将不会用于上述查询,因为查询使用的是动态属性。因此,如果存在索引,最好使用常量值。例如,如果[$prop]
等于name
,以下查询将能够使用索引MATCH (n:Person) WHERE n.name IS NOT NULL RETURN n;
- 查询
-
MATCH (n:Person) WHERE n[$prop] IS NOT NULL RETURN n;
- 返回代码的描述
-
使用动态属性使得此查询无法使用索引查找(已索引的标签为:
Person
) - 改进建议
-
如果
(n:Person) ON (n.name)
有索引,它将不会用于上述查询,因为查询使用的是动态属性。因此,如果存在索引,最好使用常量值。例如,如果[$prop]
等于name
,以下查询将能够使用索引MATCH (n:Person) WHERE n.name IS NOT NULL RETURN n;
- 查询
-
MATCH ()-[r: KNOWS]->() WHERE r[$prop] IS NOT NULL RETURN r
- 返回的 GQLSTATUS 代码
-
03N95
- 返回的状态描述
-
info: 动态属性。标签/类型
KNOWS
上存在索引。动态属性无法使用索引。请考虑使用静态属性。 - 改进建议
-
与动态节点属性类似,如果可能,请使用常量值,尤其是在关系属性上存在索引时。例如,如果
[$prop]
等于since
,您可以将查询重写为MATCH ()-[r: KNOWS]->() WHERE r.since IS NOT NULL RETURN r
- 查询
-
MATCH ()-[r: KNOWS]->() WHERE r[$prop] IS NOT NULL RETURN r
- 返回代码的描述
-
使用动态属性使得此查询无法使用索引查找(已索引的类型为:
KNOWS
) - 改进建议
-
与动态节点属性类似,如果可能,请使用常量值,尤其是在关系属性上存在索引时。例如,如果
[$prop]
等于since
,您可以将查询重写为MATCH ()-[r: KNOWS]->() WHERE r.since IS NOT NULL RETURN r
代码生成失败
当无法为查询生成代码时(例如,当查询过大时),会创建 CodeGenerationFailed
通知。有关特定查询的更多信息,请参阅 debug.log 文件中的堆栈跟踪。
Neo4j 代码 |
|
标题 |
数据库无法为查询生成代码。堆栈跟踪可在 debug.log 中找到。 |
描述 |
数据库无法为查询生成代码。堆栈跟踪可在 debug.log 中找到。(方法过大) |
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
info: 代码生成失败。无法生成代码,回退到解释型 |
分类 |
|
严重程度 |
|
HINT
通知
当 Cypher 规划器或运行时无法创建查询计划以满足指定的提示时(例如 JOIN
或 INDEX
),默认会返回 HINT
通知。可以通过将配置 dbms.cypher.hints_error
设置为 true
来更改 Cypher 规划器或运行时的此行为。在这种情况下,查询将返回错误。
Join 提示无法满足
Neo4j 代码 |
|
标题 |
数据库无法规划带提示的 join。 |
描述 |
带提示的 join 未能规划。这可能是因为生成的计划中不包含 join 键,请尝试使用不同的 join 键或重构您的查询。( |
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
warn: join 提示无法满足。无法使用 |
分类 |
|
严重程度 |
|
JOIN
提示,但仍无法满足提示- 查询
-
MATCH (a:A) WITH a, 1 AS horizon OPTIONAL MATCH (a)-[r]->(b:B) USING JOIN ON a OPTIONAL MATCH (a)--(c) RETURN *
- 返回的 GQLSTATUS 代码
-
01N30
- 返回的状态描述
-
warn: join 提示无法满足。无法使用
JOIN ON a
创建计划。尝试更改 join 键或重构您的查询。 - 改进建议
-
JOIN
提示无法应用,因为其指定的变量在OPTIONAL MATCH
之前,因此已被绑定。此查询的唯一选择是移除提示或修改查询以允许使用它。
- 查询
-
MATCH (a:A) WITH a, 1 AS horizon OPTIONAL MATCH (a)-[r]->(b:B) USING JOIN ON a OPTIONAL MATCH (a)--(c) RETURN *
- 返回代码的描述
-
带提示的 join 未能规划。这可能是因为生成的计划中不包含 join 键,请尝试使用不同的 join 键或重构您的查询。(带提示的 join 键标识符为:
a
) - 改进建议
-
JOIN
提示无法应用,因为其指定的变量在OPTIONAL MATCH
之前,因此已被绑定。此查询的唯一选择是移除提示或修改查询以允许使用它。
提示的索引未找到
Neo4j 代码 |
|
标题 |
请求(直接或间接)引用了不存在的索引。 |
描述 |
提示的索引不存在,请检查架构 ( |
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
warn: 提示的索引未找到。无法使用 |
分类 |
|
严重程度 |
|
- 查询
-
MATCH (a: Label) USING INDEX a:Label(id) WHERE a.id = 1 RETURN a
- 返回的 GQLSTATUS 代码
-
01N31
- 返回的状态描述
-
warn: 提示的索引未找到。无法使用
INDEX :Label(id)
创建计划,因为索引不存在。 - 改进建议
-
提示的索引不存在,请确保标签和属性拼写正确。如果拼写正确,请创建索引或从查询中移除提示。
- 查询
-
MATCH (a: Label) USING INDEX a:Label(id) WHERE a.id = 1 RETURN a
- 返回代码的描述
-
提示的索引不存在,请检查架构(索引为:INDEX FOR (
a
:`Label`) ON (a
.id
)) - 改进建议
-
提示的索引不存在,请确保标签和属性拼写正确。如果拼写正确,请创建索引或从查询中移除提示。
- 查询
-
MATCH ()-[r:Rel]-() USING INDEX r:Rel(id) WHERE r.id = 1 RETURN r
- 返回的 GQLSTATUS 代码
-
01N31
- 返回的状态描述
-
warn: 提示的索引未找到。无法使用
INDEX :Rel(id)
创建计划,因为索引不存在。 - 改进建议
-
提示的索引不存在,请确保关系类型和属性拼写正确。如果拼写正确,请创建索引或从查询中移除提示。
- 查询
-
MATCH ()-[r:Rel]-() USING INDEX r:Rel(id) WHERE r.id = 1 RETURN r
- 返回代码的描述
-
提示的索引不存在,请检查架构(索引为:INDEX FOR ()-[
r
:`Rel`]-() ON (r
.id
)) - 改进建议
-
提示的索引不存在,请确保关系类型和属性拼写正确。如果拼写正确,请创建索引或从查询中移除提示。
UNRECOGNIZED
通知
当查询或命令提及系统中未知实体时,会返回未识别通知。
主数据库未找到
Neo4j 代码 |
|
标题 |
请求引用了一个不存在的主数据库。 |
描述 |
提供的主数据库当前在 DBMS 中不存在。此命令直到此数据库创建后才能生效。( |
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
note: 成功完成 - 主数据库未找到。数据库 |
分类 |
|
严重程度 |
|
home
数据库设置为不存在的数据库- 查询
-
CREATE USER john SET PASSWORD "secret" SET HOME DATABASE nej4
- 返回的 GQLSTATUS 代码
-
00N50
- 返回的状态描述
-
note: 成功完成 - 主数据库未找到。数据库
ne4j
不存在。验证拼写是否正确或创建数据库以使命令生效。 - 改进建议
-
验证主数据库名称是否拼写错误。
- 查询
-
CREATE USER john SET PASSWORD "secret" SET HOME DATABASE nej4
- 返回代码的描述
-
提供的主数据库当前在 DBMS 中不存在。此命令直到此数据库创建后才能生效。(主数据库:
nej4
) - 改进建议
-
验证主数据库名称是否拼写错误。
未知标签
Neo4j 代码 |
|
标题 |
提供的标签不在数据库中。 |
描述 |
您查询中的一个标签在数据库中不可用,请确保您没有拼写错误或该标签在您应用程序中运行此语句时可用 ( |
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
|
分类 |
|
严重程度 |
|
- 查询
-
MATCH (n:Perso) RETURN n
- 返回的 GQLSTATUS 代码
-
01N50
- 返回的状态描述
-
warn: 未知标签。标签
Perso
不存在于数据库neo4j
中。验证拼写是否正确。 - 改进建议
-
验证标签是否拼写错误。如果您打算将来使用该标签创建节点,则无需更改。
- 查询
-
MATCH (n:Perso) RETURN n
- 返回代码的描述
-
您查询中的一个标签在数据库中不可用,请确保您没有拼写错误或该标签在您应用程序中运行此语句时可用(缺失的标签名称为:
Perso
) - 改进建议
-
验证标签是否拼写错误。如果您打算将来使用该标签创建节点,则无需更改。
未知关系类型
Neo4j 代码 |
|
标题 |
提供的关系类型不在数据库中。 |
描述 |
您查询中的一个关系类型在数据库中不可用,请确保您没有拼写错误或该标签在您应用程序中运行此语句时可用 ( |
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
|
分类 |
|
严重程度 |
|
- 查询
-
MATCH (n)-[:NonExistingType]->() RETURN n
- 返回的 GQLSTATUS 代码
-
01N51
- 返回的状态描述
-
warn: 未知关系类型。关系类型
NonExistingType
不存在于数据库neo4j
中。验证拼写是否正确。 - 改进建议
-
验证关系类型是否拼写错误。如果您打算将来创建此类型的关系,则无需更改。
- 查询
-
MATCH (n)-[:NonExistingType]->() RETURN n
- 返回代码的描述
-
您查询中的一个关系类型在数据库中不可用,请确保您没有拼写错误或该标签在您应用程序中运行此语句时可用(缺失的关系类型为:
NonExistingType
) - 改进建议
-
验证关系类型是否拼写错误。如果您打算将来创建此类型的关系,则无需更改。
未知属性键
Neo4j 代码 |
|
标题 |
提供的属性键不在数据库中。 |
描述 |
您查询中的一个属性名在数据库中不可用,请确保您没有拼写错误或该标签在您应用程序中运行此语句时可用 ( |
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
|
分类 |
|
严重程度 |
|
- 查询
-
MATCH (n:Person {nme:”Tom”}) RETURN n
- 返回的 GQLSTATUS 代码
-
01N52
- 返回的状态描述
-
warn: 未知属性键。属性
nme
不存在于数据库neo4j
中。验证拼写是否正确。 - 改进建议
-
验证属性键是否拼写错误。如果您打算将来创建该属性键,则无需更改。
- 查询
-
MATCH (n:Person {nme:”Tom”}) RETURN n
- 返回代码的描述
-
您查询中的一个属性名在数据库中不可用,请确保您没有拼写错误或该标签在您应用程序中运行此语句时可用(缺失的属性名为:
nme
) - 改进建议
-
验证属性键是否拼写错误。如果您打算将来创建该属性键,则无需更改。
聚合跳过空值
Neo4j 代码 |
|
标题 |
查询包含跳过空值的聚合函数。 |
描述 |
查询包含跳过空值的聚合函数。 |
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
warn: 在集合函数中消除了空值。 |
分类 |
|
严重程度 |
|
- 查询
-
UNWIND [1, NULL, 2] AS i RETURN count(i) AS sum
- 返回的 GQLSTATUS 代码
-
01G11
- 返回的状态描述
-
warn: 在集合函数中消除了空值。
- 查询
UNWIND [1, NULL, 2] AS i RETURN count(i) AS sum
- 返回代码的描述
-
查询包含跳过空值的聚合函数。
UNSUPPORTED
通知
当查询或命令尝试使用当前系统不支持的功能或使用不应在生产中使用的实验性功能时,会返回不支持的通知。
不支持的运行时
Neo4j 代码 |
|
标题 |
此查询不支持所选的运行时。 |
描述 |
所选运行时不支持此查询,请改用其他运行时或回退到默认值。( |
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
warn: 不支持的运行时。查询无法使用 |
分类 |
|
严重程度 |
|
- 查询
-
EXPLAIN CYPHER runtime=pipelined SHOW INDEXES YIELD *
- 返回的 GQLSTATUS 代码
-
01N40
- 返回的状态描述
-
warn: 不支持的运行时。查询无法使用
runtime=pipelined
执行,已使用runtime=slotted
。原因:Pipelined 尚不支持包含ShowIndexes
的计划,请使用其他运行时。 - 改进建议
-
使用不同的运行时或删除运行时选项以使用默认运行时运行查询
SHOW INDEXES YIELD *
- 查询
-
CYPHER runtime=pipelined SHOW INDEXES YIELD *
- 返回代码的描述
-
所选运行时不支持此查询,请改用其他运行时或回退到默认值。(Pipelined 尚不支持包含
ShowIndexes
的计划,请使用其他运行时。) - 改进建议
-
使用不同的运行时或删除运行时选项以使用默认运行时运行查询
SHOW INDEXES YIELD *
RuntimeExperimental
此通知的使用已在 Neo4j 5.14 之后移除。 |
Neo4j 代码 |
|
标题 |
此功能是实验性的,不应在生产系统中使用。 |
描述 |
您正在使用实验性功能 ( |
类别 |
|
严重程度 |
|
- 查询
-
CYPHER runtime=parallel MATCH (n) RETURN (n)
- 返回代码的描述
-
您正在使用实验性功能(并行运行时是实验性的,可能会出现不稳定和潜在的正确性问题。)
- 改进建议
-
并行运行时不应在生产中使用。选择其他运行时或移除选项以使用默认运行时。
MATCH (n) RETURN (n)
DEPRECATION
通知
弃用通知包含有关已弃用功能的信息。务必切换到新功能,否则,查询在未来版本中可能会中断。
功能已弃用
Neo4j 代码 |
|
标题 |
此功能已弃用,将在未来版本中移除。 |
描述 |
|
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
warn: 功能已弃用。 |
分类 |
|
严重程度 |
|
- 查询
-
CREATE DATABASE foo.bar
- 返回的 GQLSTATUS 代码
-
01N00
- 返回的状态描述
-
warn: 功能已弃用。除非指示它们属于复合数据库,否则带有未转义
.
的数据库和别名已弃用。包含.
的名称应转义。(名称:foo.bar) - 改进建议
-
如果不是用于复合数据库,请用字符
`
转义名称。CREATE DATABASE `foo.bar`
- 查询
-
CREATE DATABASE foo.bar
- 返回代码的描述
-
除非指示它们属于复合数据库,否则带有未转义
.
的数据库和别名已弃用。包含.
的名称应转义。(名称:foo.bar
) - 改进建议
-
如果不是用于复合数据库,请用字符
`
转义名称。CREATE DATABASE `foo.bar`
UNION
子句中使用不同顺序的返回项- 查询
-
RETURN 'val' as one, 'val' as two UNION RETURN 'val' as two, 'val' as one
- 返回的 GQLSTATUS 代码
-
01N00
- 返回的状态描述
-
warn: 功能已弃用。UNION [ALL] 中的所有子查询应具有相同的返回列顺序。在 UNION [ALL] 子句中使用不同顺序的返回项已弃用,并将在未来版本中移除。
- 改进建议
-
在所有通过
UNION
子句组合的子查询中,对返回列使用相同的顺序。RETURN 'val' as one, 'val' as two UNION RETURN 'val' as one, 'val' as two
- 查询
-
RETURN 'val' as one, 'val' as two UNION RETURN 'val' as two, 'val' as one
- 返回代码的描述
-
UNION [ALL] 中的所有子查询应具有相同的返回列顺序。在 UNION [ALL] 子句中使用不同顺序的返回项已弃用,并将在未来版本中移除。
- 改进建议
-
在所有通过
UNION
子句组合的子查询中,对返回列使用相同的顺序。RETURN 'val' as one, 'val' as two UNION RETURN 'val' as one, 'val' as two
在 5.5 到 5.25 版本中,在 UNION [ALL] 子句中使用不同顺序的返回项已弃用。然而,从 5.26 版本开始,经过成本效益分析和宝贵的用户反馈,此弃用已被撤回。 |
- 查询
-
RETURN 1 as my\u0085identifier
- 返回的 GQLSTATUS 代码
-
01N00
- 返回的状态描述
-
warn: 功能已弃用。Unicode 字符
\u0085
已弃用于未转义的标识符,将来将被视为空格字符。要继续使用它,请通过在标识符my\u0085identifier
周围添加反引号来转义标识符。
- 查询
-
RETURN 1 as my\u0085identifier
- 返回代码的描述
-
Unicode 字符
\u0085
已弃用于未转义的标识符,将来将被视为空格字符。要继续使用它,请通过在标识符my\u0085identifier
周围添加反引号来转义标识符。
已弃用功能并提供替代方案
Neo4j 代码 |
|
标题 |
此功能已弃用,将在未来版本中移除。 |
描述 |
|
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
|
分类 |
|
严重程度 |
|
|:
之后的冒号- 查询
-
MATCH (a)-[:A|:B|:C]-() RETURN *
- 返回的 GQLSTATUS 代码
-
01N01
- 返回的状态描述
-
warn: 功能已弃用并提供替代方案。
:A|:B|:C
已弃用。它已被:A|B|C
替代。 - 改进建议
-
移除关系类型表达式中的冒号。
MATCH (a)-[:A|B|C]-() RETURN *
- 查询
-
MATCH (a)-[:A|:B|:C]-() RETURN *
- 返回代码的描述
-
未来版本中,在替代关系类型分隔中使用冒号的语义将发生变化。(请改用 ':A|B|C')
- 改进建议
-
移除关系类型表达式中的冒号。
MATCH (a)-[:A|B|C]-() RETURN *
- 查询
-
MATCH (a)-[]-(b) SET a = b
- 返回的 GQLSTATUS 代码
-
01N01
- 返回的状态描述
-
warn: 功能已弃用并提供替代方案。
SET a = b
已弃用。它已被SET a = properties(b)
替代。 - 改进建议
-
使用
properties()
函数获取b
的所有属性。MATCH (a)-[]-(b) SET a = properties(b)
- 查询
-
MATCH (a)-[]-(b) SET a = b
- 返回代码的描述
-
使用节点或关系来设置属性已弃用,并将在未来版本中移除。请改用
properties()
。 - 改进建议
-
使用
properties()
函数获取b
的所有属性。MATCH (a)-[]-(b) SET a = properties(b)
- 查询
-
MATCH (a)-[r]-(b) SET a += r
- 返回的 GQLSTATUS 代码
-
01N01
- 返回的状态描述
-
warn: 功能已弃用并提供替代方案。
SET a += r
已弃用。它已被SET a += properties(r)
替代。 - 改进建议
-
使用
properties()
函数获取r
的所有属性。MATCH (a)-[r]-(b) SET a += properties(r)
- 查询
-
MATCH (a)-[r]-(b) SET a += r
- 返回代码的描述
-
使用节点或关系来设置属性已弃用,并将在未来版本中移除。请改用
properties()
。 - 改进建议
-
使用
properties()
函数获取r
的所有属性。MATCH (a)-[r]-(b) SET a += properties(r)
- 查询
-
MATCH (a:Start), shortestPath((a)-[r]->()) RETURN a
- 返回的 GQLSTATUS 代码
-
01N01
- 返回的状态描述
-
warn: 功能已弃用并提供替代方案。
shortestPath((a)-[r]→())
已弃用。它已被shortestPath((n)-[r*1..1]→(m))
替代。 - 改进建议
-
如果关系长度固定,则没有理由搜索最短路径。相反,您可以将其重写为以下内容
MATCH (a: Start)-[r]->(b: End) RETURN b LIMIT 1
- 查询
-
MATCH (a:Start), shortestPath((a)-[r]->()) RETURN a
- 返回代码的描述
-
使用
shortestPath
和allShortestPaths
与固定长度关系已弃用,并将在未来版本中移除。请改用长度为1 [r*1..1]
的路径或带limit
的Match
。 - 改进建议
-
如果关系长度固定,则没有理由搜索最短路径。相反,您可以将其重写为以下内容
MATCH (a: Start)-[r]->(b: End) RETURN b LIMIT 1
- 查询
-
CYPHER runtime = interpreted MATCH (n) RETURN n
- 返回的 GQLSTATUS 代码
-
01N01
- 返回的状态描述
-
warn: 功能已弃用并提供替代方案。
runtime=interpreted
已弃用。它已被runtime=slotted
替代。 - 改进建议
-
运行时
interpreted
已弃用,改用其他运行时。或者,您可以移除运行时选项以使用默认运行时。MATCH (n) RETURN n
- 查询
-
CYPHER runtime = interpreted MATCH (n) RETURN n
- 返回代码的描述
-
查询使用了已弃用的运行时选项。(
'runtime=interpreted'
已弃用,请改用'runtime=slotted'
) - 改进建议
-
运行时
interpreted
已弃用,改用其他运行时。或者,您可以移除运行时选项以使用默认运行时。MATCH (n) RETURN n
text-1.0
索引提供程序- 查询
-
CREATE TEXT INDEX FOR (n:Label) ON (n.prop) OPTIONS {indexProvider : 'text-1.0'}
- 返回的 GQLSTATUS 代码
-
01N01
- 返回的状态描述
-
warn: 功能已弃用并提供替代方案。
text-1.0
已弃用。它已被text-2.0
替代。 - 改进建议
-
将选项
indexProvider
更新为值text-2.0
。CREATE TEXT INDEX FOR (n:Label) ON (n.prop) OPTIONS {indexProvider : 'text-2.0'}
- 查询
-
CREATE TEXT INDEX FOR (n:Label) ON (n.prop) OPTIONS {indexProvider : 'text-1.0'}
- 返回代码的描述
-
用于文本索引的
text-1.0
提供程序已弃用,并将在未来版本中移除。请改用text-2.0
。 - 改进建议
-
将选项
indexProvider
更新为值text-2.0
。CREATE TEXT INDEX FOR (n:Label) ON (n.prop) OPTIONS {indexProvider : 'text-2.0'}
CALL cdc.query()
- 返回的 GQLSTATUS 代码
-
01N01
- 返回的状态描述
-
warn: 功能已弃用并提供替代方案。
cdc.query
已弃用。它已被db.cdc.query
替代。 - 改进建议
-
请改用
db.cdc.query
过程。CALL db.cdc.query()
- 查询
-
CALL cdc.query()
- 返回代码的描述
-
查询使用了已弃用的过程:
cdc.query
。 - 改进建议
-
请改用
db.cdc.query
过程。CALL db.cdc.query()
- 查询
-
MATCH (a) RETURN id(a)
- 返回的 GQLSTATUS 代码
-
01N01
- 返回的状态描述
-
warn: 功能已弃用并提供替代方案。id 已弃用。它已被 elementId 替代或考虑使用应用程序生成的 id。
- 改进建议
-
请改用
elementId()
函数。MATCH (a) RETURN elementId(a)
- 查询
-
MATCH (a) RETURN id(a)
- 返回代码的描述
-
查询使用了已弃用的函数:
id
。 - 改进建议
-
请改用
elementId()
函数。MATCH (a) RETURN elementId(a)
- 查询
-
MATCH (where {p: 5}) RETURN where
- 返回的 GQLSTATUS 代码
-
01N01
- 返回的状态描述
-
warn: 功能已弃用并提供替代方案。
(where {p: 5})
已弃用。它已被(`where` {p: 5})
替代。 - 改进建议
-
要继续使用此名称的变量,请使用反引号转义变量名。
MATCH (`where` {p: 5}) RETURN `where`.p
- 查询
-
MATCH (where {p: 5}) RETURN where
- 返回代码的描述
-
'(where {p: 5})' 已弃用。它已被 '(`where` {p: 5})' 替代。
- 改进建议
-
要继续使用此名称的变量,请使用反引号转义变量名。
MATCH (`where` {p: 5}) RETURN `where`.p
- 查询
-
MATCH ()-[where {p: 5}]->() RETURN where
- 返回的 GQLSTATUS 代码
-
01N01
- 返回的状态描述
-
warn: 功能已弃用并提供替代方案。
-[where {p: 5}]-
已弃用。它已被-[`where` {p: 5}]-
替代。 - 改进建议
-
要继续使用此名称的变量,请使用反引号转义变量名。
MATCH ()-[`where` {p: 5}]->() RETURN `where`.p
- 查询
-
MATCH ()-[where {p: 5}]->() RETURN where
- 返回代码的描述
-
'-[where {p: 5}]-' 已弃用。它已被 '-[`where` {p: 5}]-' 替代。
- 改进建议
-
要继续使用此名称的变量,请使用反引号转义变量名。
MATCH ()-[`where` {p: 5}]->() RETURN `where`.p
+
的右侧操作数- 查询
-
MATCH (n)-[r]->(m) WITH m, n.truthCodes AS listOfBooleans RETURN listOfBooleans + m:A
- 返回的 GQLSTATUS 代码
-
01N01
- 返回的状态描述
-
warn: 功能已弃用并提供替代方案。
… + m:A
已弃用。它已被… + (m:A)
替代。 - 改进建议
-
将
+
右侧的标签表达式谓词加上括号。MATCH (n)-[r]->(m) WITH m, n.truthCodes AS listOfBooleans RETURN listOfBooleans + (m:A)
- 查询
-
MATCH (n)-[r]->(m) WITH m, n.truthCodes AS listOfBooleans RETURN listOfBooleans + m:A
- 返回代码的描述
-
'… + m:A' 已弃用。它已被 '… + (m:A)' 替代。
- 改进建议
-
将
+
右侧的标签表达式谓词加上括号。MATCH (n)-[r]->(m) WITH m, n.truthCodes AS listOfBooleans RETURN listOfBooleans + (m:A)
+
的右侧操作数- 查询
-
MATCH (n)-[r]->(m) WITH r, n.truthCodes AS listOfBooleans RETURN listOfBooleans + r:C|D
- 返回的 GQLSTATUS 代码
-
01N01
- 返回的状态描述
-
warn: 功能已弃用并提供替代方案。
… + r:C|D
已弃用。它已被… + (r:C|D)
替代。 - 改进建议
-
将
+
右侧的标签表达式谓词加上括号。MATCH (n)-[r]->(m) WITH r, n.truthCodes AS listOfBooleans RETURN listOfBooleans + (r:C|D)
- 查询
-
MATCH (n)-[r]->(m) WITH r, n.truthCodes AS listOfBooleans RETURN listOfBooleans + r:C|D
- 返回代码的描述
-
'… + r:C|D' 已弃用。它已被 '… + (r:C|D)' 替代。
- 改进建议
-
将
+
右侧的标签表达式谓词加上括号。MATCH (n)-[r]->(m) WITH r, n.truthCodes AS listOfBooleans RETURN listOfBooleans + (r:C|D)
CASE
表达式中,将未转义的变量名 is
用作 WHEN
操作数- 查询
-
MATCH (n) WITH n, n.internationalStandard AS is RETURN CASE n WHEN is :: INTEGER THEN "ISO/IEC" + is ELSE is END AS standardsName
- 返回的 GQLSTATUS 代码
-
01N01
- 返回的状态描述
-
warn: 功能已弃用并提供替代方案。
WHEN is :: INTEGER
已弃用。它已被WHEN `is` :: INTEGER
替代。 - 改进建议
-
要继续在简单
CASE
表达式中使用此名称的变量,请使用反引号转义变量名。MATCH (n) WITH n, n.internationalStandard AS `is` RETURN CASE n WHEN `is` :: INTEGER THEN "ISO/IEC" + `is` ELSE `is` END AS standardsName
- 查询
-
MATCH (n) WITH n, n.internationalStandard AS is RETURN CASE n WHEN is :: INTEGER THEN "ISO/IEC" + is ELSE is END AS standardsName
- 返回代码的描述
- '何时
-
INTEGER' 已弃用。它已被 'WHEN `is` :: INTEGER' 替代。
- 改进建议
-
要继续在简单
CASE
表达式中使用此名称的变量,请使用反引号转义变量名。MATCH (n) WITH n, n.internationalStandard AS `is` RETURN CASE n WHEN `is` :: INTEGER THEN "ISO/IEC" + `is` ELSE `is` END AS standardsName
CASE
表达式中,将未转义的变量名 contains
用于 WHEN
操作数内的加法运算- 查询
-
MATCH p = (:A)-[:HAS]->(:B) WITH p, size(relationships(p)) AS contains RETURN CASE size(nodes(p)) WHEN contains + 1 THEN "okay" ELSE "not okay" END AS check
- 返回的 GQLSTATUS 代码
-
01N01
- 返回的状态描述
-
warn: 功能已弃用并提供替代方案。
WHEN contains + 1 INTEGER
已弃用。它已被WHEN `contains` + 1 INTEGER
替代。 - 改进建议
-
要继续在简单
CASE
表达式中使用此名称的变量,请使用反引号转义变量名。MATCH p = (:A)-[:HAS]->(:B) WITH p, size(relationships(p)) AS `contains` RETURN CASE size(nodes(p)) WHEN `contains` + 1 THEN "okay" ELSE "not okay" END AS check
- 查询
-
MATCH p = (:A)-[:HAS]->(:B) WITH p, size(relationships(p)) AS contains RETURN CASE size(nodes(p)) WHEN contains + 1 THEN "okay" ELSE "not okay" END AS check
- 返回代码的描述
-
'WHEN contains + 1 INTEGER' 已弃用。它已被 'WHEN `contains` + 1 INTEGER' 替代。
- 改进建议
-
要继续在简单
CASE
表达式中使用此名称的变量,请使用反引号转义变量名。MATCH p = (:A)-[:HAS]->(:B) WITH p, size(relationships(p)) AS `contains` RETURN CASE size(nodes(p)) WHEN `contains` + 1 THEN "okay" ELSE "not okay" END AS check
CASE
表达式中,将未转义的变量名 contains
用于 WHEN
操作数内的减法运算- 查询
-
MATCH p = (:A)-[:HAS]->(:B) WITH p, size(nodes(p)) AS contains RETURN CASE size(relationships(p)) WHEN contains - 1 THEN "okay" ELSE "not okay" END AS check
- 返回的 GQLSTATUS 代码
-
01N01
- 返回的状态描述
-
warn: 功能已弃用并提供替代方案。
WHEN contains - 1 INTEGER
已弃用。它已被WHEN `contains` - 1 INTEGER
替代。 - 改进建议
-
要继续在简单
CASE
表达式中使用此名称的变量,请使用反引号转义变量名。MATCH p = (:A)-[:HAS]->(:B) WITH p, size(nodes(p)) AS `contains` RETURN CASE size(relationships(p)) WHEN `contains` - 1 THEN "okay" ELSE "not okay" END AS check
- 查询
-
MATCH p = (:A)-[:HAS]->(:B) WITH p, size(nodes(p)) AS contains RETURN CASE size(relationships(p)) WHEN contains - 1 THEN "okay" ELSE "not okay" END AS check
- 返回代码的描述
-
'WHEN contains - 1 INTEGER' 已弃用。它已被 'WHEN `contains` - 1 INTEGER' 替代。
- 改进建议
-
要继续在简单
CASE
表达式中使用此名称的变量,请使用反引号转义变量名。MATCH p = (:A)-[:HAS]->(:B) WITH p, size(nodes(p)) AS `contains` RETURN CASE size(relationships(p)) WHEN `contains` - 1 THEN "okay" ELSE "not okay" END AS check
CASE
表达式中,在 WHEN
操作数内对未转义的变量名 in
使用 []
运算符- 查询
-
MATCH (c:Client)-[:MAKES]->(t:Transaction) WITH t, c.ibanNumbers AS in RETURN CASE t.ibanNumber WHEN in[0] THEN "used main account" ELSE "used different account" END AS check
- 返回的 GQLSTATUS 代码
-
01N01
- 返回的状态描述
-
warn: 功能已弃用并提供替代方案。
WHEN in[0] INTEGER
已弃用。它已被WHEN `in`[0] INTEGER
替代。 - 改进建议
-
要继续在简单
CASE
表达式中使用此名称的变量,请使用反引号转义变量名。MATCH (c:Client)-[:MAKES]->(t:Transaction) WITH t, c.ibanNumbers AS `in` RETURN CASE t.ibanNumber WHEN `in`[0] THEN "used main account" ELSE "used different account" END AS check
- 查询
-
MATCH (c:Client)-[:MAKES]->(t:Transaction) WITH t, c.ibanNumbers AS in RETURN CASE t.ibanNumber WHEN in[0] THEN "used main account" ELSE "used different account" END AS check
- 返回代码的描述
-
'WHEN in[0] INTEGER' 已弃用。它已被 'WHEN `in`[0] INTEGER' 替代。
- 改进建议
-
要继续在简单
CASE
表达式中使用此名称的变量,请使用反引号转义变量名。MATCH (c:Client)-[:MAKES]->(t:Transaction) WITH t, c.ibanNumbers AS `in` RETURN CASE t.ibanNumber WHEN `in`[0] THEN "used main account" ELSE "used different account" END AS check
CASE
表达式中,在 WHEN
操作数内对未转义的变量名 in
使用 []
运算符- 查询
-
MATCH (in:Client)-[:MAKES]->(t:Transaction) RETURN CASE t.ibanNumber WHEN in["mainAccount"] THEN "used main account" ELSE "used different account" END AS check
- 返回的 GQLSTATUS 代码
-
01N01
- 返回的状态描述
-
warn: 功能已弃用并提供替代方案。
WHEN in["mainAccount"] INTEGER
已弃用。它已被WHEN `in`["mainAccount"] INTEGER
替代。 - 改进建议
-
要继续在简单
CASE
表达式中使用此名称的变量,请使用反引号转义变量名。MATCH (in:Client)-[:MAKES]->(t:Transaction) RETURN CASE t.ibanNumber WHEN `in`["mainAccount"] THEN "used main account" ELSE "used different account" END AS check
- 查询
-
MATCH (in:Client)-[:MAKES]->(t:Transaction) RETURN CASE t.ibanNumber WHEN in["mainAccount"] THEN "used main account" ELSE "used different account" END AS check
- 返回代码的描述
-
'WHEN in["mainAccount"] INTEGER' 已弃用。它已被 'WHEN `in`["mainAccount"] INTEGER' 替代。
- 改进建议
-
要继续在简单
CASE
表达式中使用此名称的变量,请使用反引号转义变量名。MATCH (in:Client)-[:MAKES]->(t:Transaction) RETURN CASE t.ibanNumber WHEN `in`["mainAccount"] THEN "used main account" ELSE "used different account" END AS check
已弃用功能,无未来替代方案
Neo4j 代码 |
|
标题 |
此功能已弃用,将在未来版本中移除。 |
描述 |
|
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
warn: 功能已弃用,无替代方案。 |
分类 |
|
严重程度 |
|
connectComponentsPlanner
- 查询
-
CYPHER connectComponentsPlanner=greedy MATCH (a), (b) RETURN *
- 返回的 GQLSTATUS 代码
-
01N02
- 返回的状态描述
-
warn: 功能已弃用,无替代方案。
connectComponentsPlanner
已弃用,将被移除而无替代方案。
- 查询
-
CYPHER connectComponentsPlanner=greedy MATCH (a), (b) RETURN *
- 返回代码的描述
-
Cypher 查询选项
connectComponentsPlanner
已弃用,将被移除而无替代方案。产品在组合子计划时使用基于成本的 IDP 搜索算法的默认行为将保留。有关更多信息,请参阅 Cypher 手册 → Cypher 规划器。
- 查询
-
CALL unsupported.dbms.shutdown()
- 返回的 GQLSTATUS 代码
-
01N02
- 返回的状态描述
-
warn: 功能已弃用,无替代方案。
unsupported.dbms.shutdown
已弃用,将被移除而无替代方案。 - 改进建议
-
移除对已弃用过程的使用。如果存在建议的替代方案,请更新以使用替代方案。
- 查询
-
CALL unsupported.dbms.shutdown()
- 返回代码的描述
-
查询使用了已弃用的过程:
'unsupported.dbms.shutdown'
。 - 改进建议
-
移除对已弃用过程的使用。如果存在建议的替代方案,请更新以使用替代方案。
过程字段已弃用
Neo4j 代码 |
|
标题 |
此功能已弃用,将在未来版本中移除。 |
描述 |
查询使用了过程中的已弃用字段。( |
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
warn: 过程字段已弃用。过程 |
分类 |
|
严重程度 |
|
SECURITY
通知
安全通知指示查询或命令的结果可能存在潜在的安全问题。验证这是否是您的查询或命令的预期行为。
角色或权限未分配
Neo4j 代码 |
|
标题 |
|
描述 |
|
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
note: 成功完成 - 角色或权限未分配。命令 |
分类 |
|
严重程度 |
|
*<command>
和 cmd
可以是用户给出的完整命令,也可以是给定命令的子集。
- 命令
-
REVOKE ROLE admin, reader FROM jane
- 返回的 GQLSTATUS 代码
-
00N71
- 返回的状态描述
-
note: 成功完成 - 角色或权限未分配。
REVOKE ROLE reader FROM jane
无效。角色或权限未分配。 - 改进建议
-
验证这是否是预期的角色和用户。
- 命令
-
REVOKE ROLE admin, reader FROM jane
- 返回代码的标题
-
REVOKE ROLE reader FROM jane
无效。 - 返回代码的描述
-
用户没有该角色。有关更多信息,请参阅状态代码文档。
- 改进建议
-
验证这是否是预期的角色和用户。
- 命令
-
REVOKE WRITE ON GRAPH * FROM reader
- 返回的 GQLSTATUS 代码
-
00N71
- 返回的状态描述
-
note: 成功完成 - 角色或权限未分配。
REVOKE DENY WRITE ON GRAPH * FROM reader
无效。角色或权限未分配。 - 改进建议
-
验证这是否是预期的权限和角色。
- 命令
-
REVOKE WRITE ON GRAPH * FROM reader
- 返回代码的标题
-
REVOKE DENY WRITE ON GRAPH * FROM reader
无效。 - 返回代码的描述
-
该角色没有该权限。有关更多信息,请参阅状态代码文档。
- 改进建议
-
验证这是否是预期的权限和角色。
角色或权限已分配
Neo4j 代码 |
|
标题 |
|
描述 |
|
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
note: 成功完成 - 角色或权限已分配。命令 |
分类 |
|
严重程度 |
|
*<command>
和 cmd
可以是用户给出的完整命令,也可以是给定命令的子集。
- 命令
-
GRANT ROLE admin TO john
- 返回的 GQLSTATUS 代码
-
00N70
- 返回的状态描述
-
note: 成功完成 - 角色或权限已分配。
GRANT ROLE admin TO john
无效。角色或权限已分配。 - 改进建议
-
验证这是否是预期的角色和用户。
- 命令
-
GRANT ROLE admin TO john
- 返回代码的标题
-
GRANT ROLE admin TO john
无效。 - 返回代码的描述
-
用户已拥有该角色。有关更多信息,请参阅状态代码文档。
- 改进建议
-
验证这是否是预期的角色和用户。
- 命令
-
GRANT TRAVERSE ON GRAPH * TO reader
- 返回的 GQLSTATUS 代码
-
00N70
- 返回的状态描述
-
note: 成功完成 - 角色或权限已分配。
GRANT TRAVERSE ON GRAPH * TO reader
无效。角色或权限已分配。 - 改进建议
-
验证这是否是预期的权限和角色。
- 命令
-
GRANT TRAVERSE ON GRAPH * TO reader
- 返回代码的标题
-
GRANT TRAVERSE ON GRAPH * NODE * TO reader
无效。 - 返回代码的描述
-
角色已拥有该权限。有关更多信息,请参阅状态代码文档。
- 改进建议
-
验证这是否是预期的权限和角色。
不可能的撤销命令
Neo4j 代码 |
|
标题 |
|
描述 |
角色不存在。请确保没有拼写错误。此通知将在未来的主要版本中变为错误。有关更多信息,请参阅状态代码文档。 |
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
|
分类 |
|
严重程度 |
|
*<command>
和 cmd
可以是用户给出的完整命令,也可以是给定命令的子集。
- 命令
-
REVOKE ROLE manager, reader FROM jane
- 返回的 GQLSTATUS 代码
-
01N70
- 返回的状态描述
-
warn: 不可能撤销命令。
REVOKE ROLE manager FROM jane
无效。角色不存在。请确保没有拼写错误。此通知将在未来的主要版本中变为错误。 - 改进建议
-
验证这是否是预期的角色以及其拼写是否正确。
- 命令
-
REVOKE ROLE manager, reader FROM jane
- 返回代码的标题
-
REVOKE ROLE manager FROM jane
无效。 - 返回代码的描述
-
角色不存在。请确保没有拼写错误。此通知将在未来的主要版本中变为错误。有关更多信息,请参阅状态代码文档。
- 改进建议
-
验证这是否是预期的角色以及其拼写是否正确。
- 命令
-
REVOKE ROLE reader FROM alice
- 返回的 GQLSTATUS 代码
-
01N70
- 返回的状态描述
-
warn: 不可能撤销命令。
REVOKE ROLE reader FROM alice
无效。用户不存在。请确保没有拼写错误。此通知将在未来的主要版本中变为错误。有关更多信息,请参阅状态代码文档。o - 改进建议
-
验证这是否是预期的用户以及其拼写是否正确。
- 命令
-
REVOKE ROLE reader FROM alice
- 返回代码的标题
-
REVOKE ROLE reader FROM alice
无效。 - 返回代码的描述
-
用户不存在。请确保没有拼写错误。此通知将在未来的主要版本中变为错误。
- 改进建议
-
验证这是否是预期的用户以及其拼写是否正确。
- 命令
-
REVOKE GRANT WRITE ON GRAPH * FROM manager
- 返回的 GQLSTATUS 代码
-
01N70
- 返回的状态描述
-
warn: 不可能撤销命令。
REVOKE GRANT WRITE ON GRAPH * FROM manager
无效。角色不存在。请确保没有拼写错误。此通知将在未来的主要版本中变为错误。 - 改进建议
-
验证这是否是预期的角色以及其拼写是否正确。
- 命令
-
REVOKE GRANT WRITE ON GRAPH * FROM manager
- 返回代码的标题
-
REVOKE GRANT WRITE ON GRAPH * FROM manager FROM manager
无效。 - 返回代码的描述
-
角色不存在。请确保没有拼写错误。此通知将在未来的主要版本中变为错误。有关更多信息,请参阅状态代码文档。
- 改进建议
-
验证这是否是预期的角色以及其拼写是否正确。
- 命令
-
REVOKE GRANT WRITE ON GRAPH neo3j FROM editor
- 返回的 GQLSTATUS 代码
-
01N70
- 返回的状态描述
-
warn: 不可能撤销命令。
REVOKE GRANT WRITE ON GRAPH neo3j FROM editor
无效。数据库neo3j
不存在。请确保没有拼写错误。此通知将在未来的主要版本中变为错误。 - 改进建议
-
验证这是否是预期的图及其拼写是否正确。
- 命令
-
REVOKE GRANT WRITE ON GRAPH neo3j FROM editor
- 返回代码的标题
-
REVOKE GRANT WRITE ON GRAPH neo3j FROM editor
无效。 - 返回代码的描述
-
数据库
neo3j
不存在。请确保没有拼写错误。此通知将在未来的主要版本中变为错误。有关更多信息,请参阅状态代码文档。 - 改进建议
-
验证这是否是预期的图及其拼写是否正确。
- 命令
-
REVOKE GRANT ACCESS ON DATABASE neo3j FROM editor
- 返回的 GQLSTATUS 代码
-
01N70
- 返回的状态描述
-
warn: 不可能撤销命令。
REVOKE GRANT ACCESS ON DATABASE neo3j FROM editor
无效。数据库neo3j
不存在。请确保没有拼写错误。此通知将在未来的主要版本中变为错误。 - 改进建议
-
验证这是否是预期的数据库及其拼写是否正确。
- 命令
-
REVOKE GRANT ACCESS ON DATABASE neo3j FROM editor
- 返回代码的标题
-
REVOKE GRANT ACCESS ON DATABASE neo3j FROM editor
无效。 - 返回代码的描述
-
数据库
neo3j
不存在。请确保没有拼写错误。此通知将在未来的主要版本中变为错误。有关更多信息,请参阅状态代码文档。 - 改进建议
-
验证这是否是预期的数据库及其拼写是否正确。
- 参数
-
{ "graph": "*" }
- 命令
-
REVOKE GRANT CREATE ON GRAPH $graph FROM PUBLIC
- 返回的 GQLSTATUS 代码
-
01N70
- 返回的状态描述
-
warn: 不可能撤销命令。
REVOKE GRANT CREATE ON GRAPH $graph FROM PUBLIC
无效。数据库*
不存在。请确保没有拼写错误。此通知将在未来的主要版本中变为错误。 - 改进建议
-
使用不带参数的
GRAPH *
以撤销对所有图的权限。
- 参数
-
{ "graph": "*" }
- 命令
-
REVOKE GRANT CREATE ON GRAPH $graph FROM PUBLIC
- 返回代码的标题
-
REVOKE GRANT CREATE ON GRAPH $graph FROM PUBLIC
无效。 - 返回代码的描述
-
参数化数据库和图名称不支持通配符。请确保没有拼写错误。此通知将在未来的主要版本中变为错误。有关更多信息,请参阅状态代码文档。
- 改进建议
-
使用不带参数的
GRAPH *
以撤销对所有图的权限。
- 参数
-
{ "database": "*" }
- 命令
-
REVOKE GRANT ACCESS ON DATABASE $database FROM PUBLIC
- 返回的 GQLSTATUS 代码
-
01N70
- 返回的状态描述
-
warn: 不可能撤销命令。
REVOKE GRANT ACCESS ON DATABASE $database FROM PUBLIC
无效。数据库*
不存在。请确保没有拼写错误。此通知将在未来的主要版本中变为错误。 - 改进建议
-
使用不带参数的
DATABASE *
以撤销对所有数据库的权限。
- 参数
-
{ "database": "*" }
- 命令
-
REVOKE GRANT ACCESS ON DATABASE $database FROM PUBLIC
- 返回代码的标题
-
REVOKE GRANT ACCESS ON DATABASE $database FROM PUBLIC
无效。 - 返回代码的描述
-
参数化数据库和图名称不支持通配符。请确保没有拼写错误。此通知将在未来的主要版本中变为错误。有关更多信息,请参阅状态代码文档。
- 改进建议
-
使用不带参数的
DATABASE *
以撤销对所有数据库的权限。
身份验证提供程序未定义
Neo4j 代码 |
|
标题 |
身份验证提供程序未定义。 |
描述 |
身份验证提供程序 |
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
注意:成功完成 - 身份验证提供程序未定义。身份验证提供程序 |
分类 |
|
严重程度 |
|
- 命令
-
CREATE USER foo SET AUTH 'unknownProvider' { SET ID 'idString' }
- 返回的 GQLSTATUS 代码
-
00N72
- 返回的状态描述
-
注意:成功完成 - 身份验证提供程序未定义。身份验证提供程序
unknownProvider
未在配置中定义。请验证拼写是否正确,或在配置中定义unknownProvider
。 - 改进建议
-
请确保给定的提供程序是正确的,如果不是,请替换它。如果它是正确的,请确保将其作为已知身份验证提供程序添加到
dbms.security.authentication_providers
和/或dbms.security.authorization_providers
中。
- 命令
-
CREATE USER foo SET AUTH 'unknownProvider' { SET ID 'idString' }
- 返回代码的描述
-
身份验证提供程序
unknownProvider
未在配置中定义。请验证拼写是否正确,或在配置中定义unknownProvider
。 - 改进建议
-
请确保给定的提供程序是正确的,如果不是,请替换它。如果它是正确的,请确保将其作为已知身份验证提供程序添加到
dbms.security.authentication_providers
和/或dbms.security.authorization_providers
中。
- 命令
-
ALTER USER foo SET AUTH 'unknownProvider' { SET ID 'idString' }
- 返回的 GQLSTATUS 代码
-
00N72
- 返回的状态描述
-
注意:成功完成 - 身份验证提供程序未定义。身份验证提供程序
unknownProvider
未在配置中定义。请验证拼写是否正确,或在配置中定义unknownProvider
。 - 改进建议
-
请确保给定的提供程序是正确的,如果不是,请替换它。如果它是正确的,请确保将其作为已知身份验证提供程序添加到
dbms.security.authentication_providers
和/或dbms.security.authorization_providers
中。
- 命令
-
ALTER USER foo SET AUTH 'unknownProvider' { SET ID 'idString' }
- 返回代码的描述
-
身份验证提供程序
unknownProvider
未在配置中定义。请验证拼写是否正确,或在配置中定义unknownProvider
。 - 改进建议
-
请确保给定的提供程序是正确的,如果不是,请替换它。如果它是正确的,请确保将其作为已知身份验证提供程序添加到
dbms.security.authentication_providers
和/或dbms.security.authorization_providers
中。
用户的外部身份验证未启用
Neo4j 代码 |
|
标题 |
用户的外部身份验证未启用。 |
描述 |
使用设置 |
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
警告:外部身份验证已禁用。使用设置 |
分类 |
|
严重程度 |
|
- 命令
-
CREATE USER foo SET AUTH 'exampleProvider' { SET ID 'idString' }
- 返回的 GQLSTATUS 代码
-
01N71
- 返回的状态描述
-
警告:外部身份验证已禁用。使用设置 'dbms.security.require_local_user' 启用外部身份验证。
- 改进建议
-
通过
dbms.security.require_local_user
设置启用链接用户。在此设置启用之前,新的外部身份验证将被忽略,并且当前的外部身份验证行为将继续适用。
- 命令
-
CREATE USER foo SET AUTH 'exampleProvider' { SET ID 'idString' }
- 改进建议
-
通过
dbms.security.require_local_user
设置启用链接用户。在此设置启用之前,新的外部身份验证将被忽略,并且当前的外部身份验证行为将继续适用。
- 命令
-
ALTER USER foo SET AUTH 'exampleProvider' { SET ID 'idString' }
- 返回的 GQLSTATUS 代码
-
01N71
- 返回的状态描述
-
警告:外部身份验证已禁用。使用设置 'dbms.security.require_local_user' 启用外部身份验证。
- 改进建议
-
通过
dbms.security.require_local_user
设置启用链接用户。在此设置启用之前,新的外部身份验证将被忽略,并且当前的外部身份验证行为将继续适用。
- 命令
-
ALTER USER foo SET AUTH 'exampleProvider' { SET ID 'idString' }
- 改进建议
-
通过
dbms.security.require_local_user
设置启用链接用户。在此设置启用之前,新的外部身份验证将被忽略,并且当前的外部身份验证行为将继续适用。
拓扑
通知
拓扑通知提供与管理数据库和服务器相关的附加信息。
服务器已启用
Neo4j 代码 |
|
标题 |
|
描述 |
服务器 |
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
注意:成功完成 - 服务器已启用。命令 |
分类 |
|
严重程度 |
|
- 命令
-
ENABLE SERVER "123e4567-e89b-12d3-a456-426614174000"
- 返回的 GQLSTATUS 代码
-
00N80
- 返回的状态描述
-
注意:成功完成 - 服务器已启用。
ENABLE SERVER
无效。服务器123e4567-e89b-12d3-a456-426614174000
已启用。请验证这是否是预期的服务器。
- 命令
-
ENABLE SERVER "123e4567-e89b-12d3-a456-426614174000"
- 返回代码的描述
-
服务器
123e4567-e89b-12d3-a456-426614174000
已启用。请验证这是否是预期的服务器。
服务器已隔离
Neo4j 代码 |
|
标题 |
|
描述 |
服务器 |
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
注意:成功完成 - 服务器已隔离。命令 |
分类 |
|
严重程度 |
|
- 命令
-
CORDON SERVER "123e4567-e89b-12d3-a456-426614174000"
- 返回的 GQLSTATUS 代码
-
00N81
- 返回的状态描述
-
注意:成功完成 - 服务器已隔离。
CORDON SERVER
无效。服务器123e4567-e89b-12d3-a456-426614174000
已被隔离。请验证这是否是预期的服务器。
- 命令
-
CORDON SERVER "123e4567-e89b-12d3-a456-426614174000"
- 返回代码的描述
-
服务器
123e4567-e89b-12d3-a456-426614174000
已被隔离。请验证这是否是预期的服务器。
未重新分配数据库
Neo4j 代码 |
|
标题 |
|
描述 |
没有数据库被重新分配。目前无法进行更好的分配。 |
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
注意:成功完成 - 未重新分配数据库。命令 |
分类 |
|
严重程度 |
|
- 命令
-
REALLOCATE DATABASES
- 返回的 GQLSTATUS 代码
-
00N82
- 返回的状态描述
-
注意:成功完成 - 未重新分配数据库。
REALLOCATE DATABASES
无效。没有数据库被重新分配。目前无法进行更好的分配。 - 示例场景
-
场景 1:集群已平衡。例如,当有三台服务器,每台都托管数据库
foo
和bar
,这意味着所有数据库都已分配给所有服务器。场景 2:集群看起来不平衡,但服务器约束阻止了您移动到更好、更平衡的分配。例如,假设服务器 1 托管数据库
foo
和bar
,服务器 2 仅托管foo
,服务器 3 不托管任何数据库。那么,更好的分配会将foo
从服务器 1 移动到服务器 3,但如果服务器 3 具有约束deniedDatabases:['foo']}
,则集群在此约束下已平衡。
- 命令
-
REALLOCATE DATABASES
- 返回代码的描述
-
没有数据库被重新分配。目前无法进行更好的分配。
- 示例场景
-
场景 1:集群已平衡。例如,当有三台服务器,每台都托管数据库
foo
和bar
,这意味着所有数据库都已分配给所有服务器。场景 2:集群看起来不平衡,但服务器约束阻止了您移动到更好、更平衡的分配。例如,假设服务器 1 托管数据库
foo
和bar
,服务器 2 仅托管foo
,服务器 3 不托管任何数据库。那么,更好的分配会将foo
从服务器 1 移动到服务器 3,但如果服务器 3 具有约束deniedDatabases:['foo']}
,则集群在此约束下已平衡。
分配期间存在被隔离的服务器
当 Cypher 管理命令触发分配决策且部分服务器被隔离时,会返回此通知。例如,CREATE DATABASE
、ALTER DATABASE
、DEALLOCATE DATABASES FROM SERVER[S]
和 ALTER DATABASE
会返回此通知。但是,REALLOCATE DATABASES
要求没有被隔离的服务器,因此不会返回此通知。
Neo4j 代码 |
|
标题 |
在进行分配决策时存在被隔离的服务器。 |
描述 |
服务器 |
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
注意:成功完成 - 分配期间存在被隔离的服务器。在进行分配决策时存在被隔离的服务器。服务器 |
分类 |
|
严重程度 |
|
本示例假设您有一个包含三台服务器的集群,其中服务器 123e4567-e89b-12d3-a456-426614174000
使用 dbms.cluster.cordonServer
过程被隔离。然后以下命令将返回此通知。
- 命令
-
CREATE DATABASE foo TOPOLOGY 2 PRIMARIES
- 返回的 GQLSTATUS 代码
-
00N83
- 返回的状态描述
-
注意:成功完成 - 分配期间存在被隔离的服务器。在进行分配决策时存在被隔离的服务器。服务器
123e4567-e89b-12d3-a456-426614174000
已被隔离。这可能会影响分配决策。
本示例假设您有一个包含三台服务器的集群,其中服务器 123e4567-e89b-12d3-a456-426614174000
使用 dbms.cluster.cordonServer
过程被隔离。然后以下命令将返回此通知。
- 命令
-
CREATE DATABASE foo TOPOLOGY 2 PRIMARIES
- 返回代码的描述
-
服务器
123e4567-e89b-12d3-a456-426614174000
已被隔离。这可能会影响分配决策。
请求的拓扑与当前拓扑匹配
Neo4j 代码 |
|
标题 |
|
描述 |
请求的拓扑与当前拓扑匹配。没有更改任何分配。 |
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
注意:成功完成 - 请求的拓扑与当前拓扑匹配。命令 |
分类 |
|
严重程度 |
|
本示例假设您有一个包含三台服务器的集群和一个数据库 foo
,其拓扑结构为两个主节点和一个从节点。
- 命令
-
ALTER DATABASE foo SET TOPOLOGY 2 PRIMARIES 1 SECONDARY
- 返回的 GQLSTATUS 代码
-
00N84
- 返回的状态描述
-
注意:成功完成 - 请求的拓扑与当前拓扑匹配。命令
ALTER DATABASE
无效。请求的拓扑与当前拓扑匹配。没有更改任何分配。
本示例假设您有一个包含三台服务器的集群和一个数据库 foo
,其拓扑结构为两个主节点和一个从节点。
- 命令
-
ALTER DATABASE foo SET TOPOLOGY 2 PRIMARIES 1 SECONDARY
- 返回代码的描述
-
请求的拓扑与当前拓扑匹配。没有更改任何分配。
服务器在 WAIT
命令期间已追赶完成
Neo4j 代码 |
|
标题 |
服务器已追赶完成。 |
描述 |
地址为 |
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
信息:服务器已追赶完成。地址为 |
分类 |
|
严重程度 |
|
WAIT
命令成功完成- 查询
-
CREATE DATABASE foo TOPOLOGY 2 PRIMARIES WAIT
集群中的每台服务器都会返回一个通知
- 返回的 GQLSTATUS 代码
-
03N85
- 返回的状态描述
-
信息:服务器已追赶完成。地址为
localhost:20025
的服务器ServerId{0e010000}
已追赶完成。 - 返回的 GQLSTATUS 代码
-
03N85
- 返回的状态描述
-
信息:服务器已追赶完成。地址为
localhost:20026
的服务器ServerId{0e020000}
已追赶完成。
- 查询
-
CREATE DATABASE foo TOPOLOGY 2 PRIMARIES WAIT
集群中的每台服务器都会返回一个通知
- 返回代码的描述
-
地址为
localhost:20025
的服务器ServerId{0e010000}
已追赶完成。 - 返回代码的描述
-
地址为
localhost:20026
的服务器ServerId{0e020000}
已追赶完成。
服务器在 WAIT
命令期间失败
Neo4j 代码 |
|
标题 |
服务器失败。 |
描述 |
地址为 |
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
警告:服务器失败。地址为 |
分类 |
|
严重程度 |
|
WAIT
命令期间失败- 查询
-
CREATE DATABASE foo TOPOLOGY 2 PRIMARIES WAIT
集群中的每台服务器都会返回一个通知
- 返回的 GQLSTATUS 代码
-
03N85
- 返回的状态描述
-
信息:服务器已追赶完成。地址为
localhost:20025
的服务器ServerId{0e010000}
已追赶完成。 - 返回的 GQLSTATUS 代码
-
01N80
- 返回的状态描述
-
警告:服务器失败。地址为
localhost:20026
的服务器ServerId{0e020000}
失败:已追赶完成但数据库 DatabaseId{0db00002[foo]} 存在故障。故障:java.nio.file.FileAlreadyExistsException: <…> - 改进建议
-
使用提供的消息调查失败的服务器。
- 查询
-
CREATE DATABASE foo TOPOLOGY 2 PRIMARIES WAIT
集群中的每台服务器都会返回一个通知
- 返回代码的描述
-
地址为
localhost:20025
的服务器ServerId{0e010000}
已追赶完成。 - 返回代码的描述
-
地址为
localhost:20026
的服务器ServerId{0e020000}
失败:已追赶完成但数据库 DatabaseId{0db00002[foo]} 存在故障。故障:java.nio.file.FileAlreadyExistsException: <…> - 改进建议
-
使用提供的消息调查失败的服务器。
服务器在 WAIT
命令期间仍在追赶中
Neo4j 代码 |
|
标题 |
服务器仍在追赶中。 |
描述 |
地址为 |
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
警告:服务器正在追赶中。地址为 |
分类 |
|
严重程度 |
|
WAIT
命令期间仍在追赶中- 查询
-
CREATE DATABASE foo TOPOLOGY 2 PRIMARIES WAIT
集群中的每台服务器都会返回一个通知
- 返回的 GQLSTATUS 代码
-
03N85
- 返回的状态描述
-
信息:服务器已追赶完成。地址为
localhost:20025
的服务器ServerId{0e010000}
已追赶完成。 - 返回的 GQLSTATUS 代码
-
01N81
- 返回的状态描述
-
警告:服务器正在追赶中。地址为
localhost:20026
的服务器ServerId{0e020000}
仍在追赶中。 - 改进建议
-
此行为表明其中一台服务器落后。请调查服务器和网络是否存在性能问题,或增加等待超时时间。
- 查询
-
CREATE DATABASE foo TOPOLOGY 2 PRIMARIES WAIT
集群中的每台服务器都会返回一个通知
- 返回代码的描述
-
地址为
localhost:20025
的服务器ServerId{0e010000}
已追赶完成。 - 返回代码的描述
-
地址为
localhost:20026
的服务器ServerId{0e020000}
仍在追赶中。 - 改进建议
-
此行为表明其中一台服务器落后。请调查服务器和网络是否存在性能问题,或增加等待超时时间。
服务器在 WAIT
命令期间不可用
Neo4j 代码 |
|
标题 |
服务器不可用。 |
描述 |
服务器 |
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
警告:服务器不可用。服务器 |
分类 |
|
严重程度 |
|
WAIT
命令期间不可用- 查询
-
CREATE DATABASE foo TOPOLOGY 2 PRIMARIES WAIT
集群中的每台服务器都会返回一个通知
- 返回的 GQLSTATUS 代码
-
03N85
- 返回的状态描述
-
信息:服务器已追赶完成。地址为
localhost:20025
的服务器ServerId{0e010000}
已追赶完成。 - 返回的 GQLSTATUS 代码
-
01N82
- 返回的状态描述
-
警告:服务器不可用。地址为
localhost:20026
的服务器ServerId{0e020000}
不可用。 - 改进建议
-
调查服务器以确定其不可用的原因。
- 查询
-
CREATE DATABASE foo TOPOLOGY 2 PRIMARIES WAIT
集群中的每台服务器都会返回一个通知
- 返回代码的描述
-
地址为
localhost:20025
的服务器ServerId{0e010000}
已追赶完成。 - 返回代码的描述
-
地址为
localhost:20026
的服务器ServerId{0e020000}
不可用。 - 改进建议
-
调查服务器以确定其不可用的原因。
SCHEMA
通知
Schema 通知提供与索引和约束相关的附加信息。
索引或约束已存在
Neo4j 代码 |
|
标题 |
|
描述 |
|
描述 |
|
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
注意:成功完成 - 索引或约束已存在。命令 |
严重程度 |
|
*<command>
和 cmd
可以是用户给出的完整命令,也可以是给定命令的子集。
给定一个名为 existingRangeIndex
的范围索引,其基于 (:Label {property})
。
- 命令
-
CREATE INDEX labelProperyRangeIndex IF NOT EXISTS FOR (n:Label) ON (n.property)
- 返回的 GQLSTATUS 代码
-
00NA0
- 返回的状态描述
-
注意:成功完成 - 索引或约束已存在。
CREATE RANGE INDEX labelProperyRangeIndex IF NOT EXISTS FOR (e:Label) ON (e.property)
无效。RANGE INDEX existingRangeIndex FOR (e:Label) ON (e.property)
已存在。
给定一个名为 existingRangeIndex
的范围索引,其基于 (:Label {property})
。
- 命令
-
CREATE INDEX labelProperyRangeIndex IF NOT EXISTS FOR (n:Label) ON (n.property)
- 返回代码的标题
-
CREATE RANGE INDEX labelProperyRangeIndex IF NOT EXISTS FOR (e:Label) ON (e.property)
无效。 - 返回代码的完整描述
-
RANGE INDEX existingRangeIndex FOR (e:Label) ON (e.property)
已存在。
给定一个名为 myIndex
的范围索引,其基于 (:Label {property})
。
- 命令
-
CREATE TEXT INDEX myIndex IF NOT EXISTS FOR ()-[r:REL_TYPE]-() ON (r.property)
- 返回的 GQLSTATUS 代码
-
00NA0
- 返回的状态描述
-
注意:成功完成 - 索引或约束已存在。
CREATE TEXT INDEX myIndex IF NOT EXISTS FOR ()-[e:REL_TYPE]-() ON (e.property)
无效。RANGE INDEX myIndex FOR (e:Label) ON (e.property)
已存在。 - 改进建议
-
请为新索引选择一个不同的名称,然后重试。
CREATE TEXT INDEX myIndex2 IF NOT EXISTS FOR ()-[r:REL_TYPE]-() ON (r.property)
给定一个名为 myIndex
的范围索引,其基于 (:Label {property})
。
- 命令
-
CREATE TEXT INDEX myIndex IF NOT EXISTS FOR ()-[r:REL_TYPE]-() ON (r.property)
- 返回代码的标题
-
CREATE TEXT INDEX myIndex IF NOT EXISTS FOR ()-[e:REL_TYPE]-() ON (e.property)
无效。 - 返回代码的完整描述
-
RANGE INDEX myIndex FOR (e:Label) ON (e.property)
已存在。 - 改进建议
-
请为新索引选择一个不同的名称,然后重试。
CREATE TEXT INDEX myIndex2 IF NOT EXISTS FOR ()-[r:REL_TYPE]-() ON (r.property)
给定一个名为 nodeKeyLabelPropertyConstraint
的节点键约束,其基于 (:Label {property})
。
- 命令
-
CREATE CONSTRAINT nodeKeyLabelPropertyConstraint IF NOT EXISTS FOR (n:Label) REQUIRE (n.property) IS NODE KEY
- 返回的 GQLSTATUS 代码
-
00NA0
- 返回的状态描述
-
注意:成功完成 - 索引或约束已存在。
CREATE CONSTRAINT nodeKeyLabelPropertyConstraint IF NOT EXISTS FOR (e:Label) REQUIRE (e.property) IS NODE KEY
无效。CONSTRAINT nodeKeyLabelPropertyConstraint FOR (e:Label) REQUIRE (e.property) IS NODE KEY
已存在。
给定一个名为 nodeKeyLabelPropertyConstraint
的节点键约束,其基于 (:Label {property})
。
- 命令
-
CREATE CONSTRAINT nodeKeyLabelPropertyConstraint IF NOT EXISTS FOR (n:Label) REQUIRE (n.property) IS NODE KEY
- 返回代码的标题
-
CREATE CONSTRAINT nodeKeyLabelPropertyConstraint IF NOT EXISTS FOR (e:Label) REQUIRE (e.property) IS NODE KEY
无效。 - 返回代码的完整描述
-
CONSTRAINT nodeKeyLabelPropertyConstraint FOR (e:Label) REQUIRE (e.property) IS NODE KEY
已存在。
给定一个名为 myConstraint
的节点键约束,其基于 (:Label {property})
。
- 命令
-
CREATE CONSTRAINT myConstraint IF NOT EXISTS FOR (n:Label2) REQUIRE (n.property2) IS NOT NULL
- 返回的 GQLSTATUS 代码
-
00NA0
- 返回的状态描述
-
注意:成功完成 - 索引或约束已存在。
CREATE CONSTRAINT myConstraint IF NOT EXISTS FOR (e:Label2) REQUIRE (e.property2) IS NOT NULL
无效。CONSTRAINT myConstraint FOR (e:Label) REQUIRE (e.property) IS NODE KEY
已存在。 - 改进建议
-
请为新约束选择一个不同的名称,然后重试。
CREATE CONSTRAINT myConstraint2 IF NOT EXISTS FOR (n:Label2) REQUIRE (n.property2) IS NOT NULL
给定一个名为 myConstraint
的节点键约束,其基于 (:Label {property})
。
- 命令
-
CREATE CONSTRAINT myConstraint IF NOT EXISTS FOR (n:Label2) REQUIRE (n.property2) IS NOT NULL
- 返回代码的标题
-
CREATE CONSTRAINT myConstraint IF NOT EXISTS FOR (e:Label2) REQUIRE (e.property2) IS NOT NULL
无效。 - 返回代码的完整描述
-
CONSTRAINT myConstraint FOR (e:Label) REQUIRE (e.property) IS NODE KEY
已存在。 - 改进建议
-
请为新约束选择一个不同的名称,然后重试。
CREATE CONSTRAINT myConstraint2 IF NOT EXISTS FOR (n:Label2) REQUIRE (n.property2) IS NOT NULL
索引或约束不存在
Neo4j 代码 |
|
标题 |
|
描述 |
|
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
注意:成功完成 - 索引或约束不存在。命令 |
严重程度 |
|
- 命令
-
DROP INDEX nonExistingIndex IF EXISTS
- 返回的 GQLSTATUS 代码
-
00NA1
- 返回的状态描述
-
注意:成功完成 - 索引或约束不存在。
DROP INDEX nonExistingIndex IF EXISTS
无效。nonExistingIndex
不存在。 - 改进建议
-
请验证这是否是预期的索引,并且拼写正确。
- 命令
-
DROP INDEX nonExistingIndex IF EXISTS
- 返回代码的标题
-
DROP INDEX nonExistingIndex IF EXISTS
无效。 - 返回代码的完整描述
-
nonExistingIndex
不存在。 - 改进建议
-
请验证这是否是预期的索引,并且拼写正确。
- 命令
-
DROP CONSTRAINT nonExistingConstraint IF EXISTS
- 返回的 GQLSTATUS 代码
-
00NA1
- 返回的状态描述
-
注意:成功完成 - 索引或约束不存在。
DROP CONSTRAINT nonExistingConstraint IF EXISTS
无效。nonExistingConstraint
不存在。 - 改进建议
-
请验证这是否是预期的约束,并且拼写正确。
- 命令
-
DROP CONSTRAINT nonExistingConstraint IF EXISTS
- 返回代码的标题
-
DROP CONSTRAINT nonExistingConstraint IF EXISTS
无效。 - 返回代码的完整描述
-
nonExistingConstraint
不存在。 - 改进建议
-
请验证这是否是预期的约束,并且拼写正确。
通用
通知
通用
通知代码不属于任何更广泛的类型,彼此之间没有任何关联。
子查询变量遮蔽
Neo4j 代码 |
|
标题 |
子查询中的变量遮蔽了外部作用域中同名的变量。 |
描述 |
子查询中的变量遮蔽了外部作用域中同名的变量。如果您想使用该变量,则必须使用 WITH 子句将其导入到子查询中。( |
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
|
分类 |
|
严重程度 |
|
- 查询
-
MATCH (n) CALL { MATCH (n)--(m) RETURN m } RETURN *
- 返回的 GQLSTATUS 代码
-
03N60
- 返回的状态描述
-
信息:子查询变量遮蔽。子查询中的变量
n
与外部查询中的变量同名。在子查询中使用WITH n
将外部作用域中的变量导入,除非您希望它是一个新变量。 - 改进建议
-
如果查询的预期行为是子查询中的变量是一个新变量,则无需执行任何操作。如果预期行为是使用外部查询中的变量,则需要使用
WITH
子句将其导入到子查询中。MATCH (n) CALL { WITH n MATCH (n)--(m) RETURN m } RETURN *
- 查询
-
MATCH (n) CALL { MATCH (n)--(m) RETURN m } RETURN *
- 返回代码的描述
-
子查询中的变量遮蔽了外部作用域中同名的变量。如果您想使用该变量,则必须使用
WITH
子句将其导入到子查询中。(遮蔽变量为:n
) - 改进建议
-
如果查询的预期行为是子查询中的变量是一个新变量,则无需执行任何操作。如果预期行为是使用外部查询中的变量,则需要使用
WITH
子句将其导入到子查询中。MATCH (n) CALL { WITH n MATCH (n)--(m) RETURN m } RETURN *
冗余可选过程
Neo4j 代码 |
|
标题 |
当过程调用 void 过程时,使用 |
描述 |
使用 |
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
信息:冗余可选过程。使用 |
分类 |
|
严重程度 |
|
OPTIONAL
的冗余使用- 查询
-
OPTIONAL CALL db.createLabel("A")
- 返回的 GQLSTATUS 代码
-
03N61
- 返回的状态描述
-
信息:冗余可选过程。使用
OPTIONAL
是冗余的,因为CALL db.createLabel
是一个 void 过程。 - 改进建议
-
如果查询的预期行为是使用 void 过程,则可以删除
OPTIONAL
关键字而不影响查询。CALL db.createLabel("A")
- 查询
-
OPTIONAL CALL db.createLabel("A")
- 返回代码的描述
-
使用
OPTIONAL
是冗余的,因为CALL db.createLabel
是一个 void 过程。 - 改进建议
-
如果查询的预期行为是使用 void 过程,则可以删除
OPTIONAL
关键字而不影响查询。CALL db.createLabel("A")
冗余可选子查询
Neo4j 代码 |
|
标题 |
当 |
描述 |
使用 |
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
信息:冗余可选子查询。使用 |
分类 |
|
严重程度 |
|
CALL
子查询中 OPTIONAL
的冗余使用- 查询
-
UNWIND [1, 2, 3] AS x OPTIONAL CALL (x) { CREATE({i:x}) }
- 返回的 GQLSTATUS 代码
-
03N62
- 返回代码的描述
-
信息:冗余可选子查询。使用
OPTIONAL
是冗余的,因为CALL
是一个单元子查询。 - 改进建议
-
如果查询的预期行为是子查询不返回任何值,则可以删除
OPTIONAL
关键字而不影响查询。UNWIND [1, 2, 3] AS x CALL (x) { CREATE({i:x}) }
- 查询
-
UNWIND [1, 2, 3] AS x OPTIONAL CALL (x) { CREATE({i:x}) }
- 返回代码的描述
-
在单元子查询的情况下,Optional 是冗余的。在单元子查询上使用
OPTIONAL
没有效果,可以删除。 - 改进建议
-
如果查询的预期行为是子查询不返回任何值,则可以删除
OPTIONAL
关键字而不影响查询。UNWIND [1, 2, 3] AS x CALL (x) { CREATE({i:x}) }
缺少参数
Neo4j 代码 |
|
标题 |
该语句引用了请求中未提供的参数。 |
描述 |
未提供足够的查询参数。生成的查询计划将不会被缓存,并且在没有 EXPLAIN 的情况下无法执行。( |
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
警告:缺少参数。由于未定义的参数 |
分类 |
|
严重程度 |
|
EXPLAIN
查询- 查询
-
EXPLAIN WITH $param as param RETURN param
- 返回的 GQLSTATUS 代码
-
01N60
- 返回的状态描述
-
警告:缺少参数。由于未定义的参数
{ $param }
,查询计划无法缓存,并且在没有EXPLAIN
的情况下无法执行。请提供参数。 - 改进建议
-
提供参数以便能够缓存计划。
- 查询
-
EXPLAIN WITH $param as param RETURN param
- 返回代码的描述
-
未提供足够的查询参数。生成的查询计划将不会被缓存,并且在没有
EXPLAIN
的情况下无法执行。(缺少参数:param
) - 改进建议
-
提供参数以便能够缓存计划。
过程或函数执行警告
Neo4j 代码 |
|
标题 |
该查询使用了生成警告的过程。 |
描述 |
该查询使用了生成警告的过程。( |
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
|
分类 |
|
严重程度 |
|
无法满足的关系类型表达式
当匹配永远无法满足的关系类型表达式时,例如请求零个、多于一个或矛盾的类型。
Neo4j 代码 |
|
标题 |
该查询包含一个无法满足的关系类型表达式。 |
描述 |
关系类型表达式不可能被满足。( |
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
警告:无法满足的关系类型表达式。表达式 |
分类 |
|
严重程度 |
|
- 查询
-
MATCH ()-[r:R1&R2]->() RETURN r
- 返回的 GQLSTATUS 代码
-
01N61
- 返回的状态描述
-
警告:无法满足的关系类型表达式。表达式
R1&R2
无法满足,因为关系必须且只能有一种类型。
- 查询
-
MATCH ()-[r:R1&R2]->() RETURN r
- 返回代码的描述
-
关系类型表达式不可能被满足。(任何关系都不能满足
R1&R2
。关系必须且只能有一种类型。)
重复的关系引用
Neo4j 代码 |
|
标题 |
查询不返回结果,因为关系变量被绑定了多次。 |
描述 |
|
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
|
分类 |
|
严重程度 |
|
- 查询
-
MATCH (:A)-[r]->(), ()-[r]->(:B) RETURN r
- 返回的 GQLSTATUS 代码
-
01N63
- 返回的状态描述
-
警告:重复的关系引用。
r
在(:A)-[r]→(), ()-[r]→(:B)
中重复,这导致没有结果。 - 改进建议
-
使用一个模式来匹配所有起始节点标签为
A
且结束节点标签为B
的关系。MATCH (:A)-[r]->(:B) RETURN r
- 查询
-
MATCH (:A)-[r]->(), ()-[r]->(:B) RETURN r
- 返回代码的描述
-
查询中多次引用了关系,这导致没有结果,因为每个结果中关系不能出现多次。(关系
r
重复了) - 改进建议
-
使用一个模式来匹配所有起始节点标签为
A
且结束节点标签为B
的关系。MATCH (:A)-[r]->(:B) RETURN r
- 查询
-
MATCH ()-[r*]->()<-[r*]-() RETURN count(*) AS count
- 返回的 GQLSTATUS 代码
-
01N63
- 返回的状态描述
-
警告:重复的关系引用。
r
在()-[r*]→()←[r*]-()
中重复,这导致没有结果。
- 查询
-
MATCH ()-[r*]->()<-[r*]-() RETURN count(*) AS count
- 返回代码的描述
-
变长关系变量被绑定了多次,这导致没有结果,因为每个结果中关系不能出现多次。(关系 r 重复了)
词汇表
- $action
-
操作的自由形式描述。
- $alias
-
一个别名,例如
mydb-alias
。 - $aliasList
-
别名列表,例如
mydb-alias1, mydb-alias2
。 - $allocType
-
分配类型(
primary
或secondary
)。 - $arg
-
过程或函数参数,例如
database
、pause
、dryrun
等。 - $argType
-
参数类型,输入或输出。
- $auth
-
身份验证提供程序名称,例如
ldap
、native
。 - $boltServerState
-
Bolt 服务器状态,例如
READY
。 - $boltMsgLenLimit
-
Bolt 消息长度限制,例如
1000
。 - $cause
-
错误原因的自由形式描述。
- $cfgSetting
-
配置设置键,例如
server.https.enabled
。 - $clause
-
Cypher 子句,例如
USE
、MATCH
。 - $clause
-
Cypher 子句列表,例如
USE, MATCH
。 - $cmd
-
Cypher 命令,例如
DROP DATABASE
、PROFILE
、SHOW PROCEDURES
。 - $component
-
某个组件,例如时间中的小时/分钟,整个输入中的子集输入,整个
CREATE/ALTER DB … SET TOPOLOGY
中的TOPOLOGY
子句等。 - $constr
-
约束名称,例如
book_isbn
。 - $constrDescrOrName
-
约束描述,
(:Label {property0, property1, property2, property1, property3})
。 - $context
-
上下文的自由形式描述,其中某些内容无效或不受支持,例如
OPTIONS
、URL
、username
等。 - $coordinates
-
坐标值,例如
[3.15, 4.012, 5.905]
。 - $count
-
某物的数量,例如
3
。 - $countAllocs
-
希望使用的服务器数量。
- $countSeeders
-
种子服务器的数量。
- $crs
-
坐标参考系统,例如
WGS84
。 - $db
-
数据库名称,例如
myDb
。 - $dbList
-
数据库名称列表。
- $dim
-
表示索引或点维度的数字。
- $edition
-
Neo4j 版本,例如 Community 或 Enterprise。
- $endpointType
-
关系的
start
或end
之一。 - $entityId
-
节点或关系的 ID。
- $entityType
-
一个节点或一个关系。
- $expr
-
Cypher 表达式,例如
1 + n.prop
。 - $exprType
-
自由形式表达式类型,例如
EXISTS
、COUNT
、COLLECT
。 - $feat
-
自由形式的功能描述。
- $field
-
输入字段,例如过程、函数或反序列化中的。
- $fun
-
函数名称,例如
collect()
。 - $funClass
-
用户定义函数实现类名称,例如
MyFunctionClass
。 - $funType
-
函数类型,例如非确定性或聚合。
- $graph
-
图的名称,例如
myGraph
。 - $graphTypeDependence
-
约束的图类型依赖性,为
UNDESIGNATED
、INDEPENDENT
或DEPENDENT
之一。 - $hint
-
提示的自由形式描述,例如
USING INDEX n:N(prop)
。 - $hintList
-
提示的自由形式描述列表,例如
USING INDEX n:N(prop)
。 - $idx
-
索引名称,例如
my_index
。 - $idxDescr
-
索引描述,例如
INDEX :Person(name)
。 - $idxDescrOrName
-
索引描述符或名称。
- $idxOrConstr
-
索引或约束名称,例如
my_index
或book_isbn
。 - $idxOrConstrPat
-
索引或约束模式,例如
CREATE CONSTRAINT bar IF NOT EXISTS FOR (n:L) REQUIRE (n.p1) IS NODE KEY
。 - $idxType
-
索引类型,例如文本、向量等。
- $input
-
用户输入的一部分。
- $inputList
-
用户输入列表。
- $item
-
项目的自由形式描述。
- $keyword
-
Cypher 关键字,例如
MERGE
。 - $label
-
标签名称,例如
Person
。 - $labelExpr
-
标签表达式,例如
(n:Movie|Person)
。 - $labelList
-
标签名称列表,例如
Person, Actor
。 - $lower
-
范围的最低接受数字。
- $mapKey
-
Map 键。
- $mapKeyList
-
Map 键列表,例如 Map
{first: 1, second: 2}
中的first and second
。 - $matchMode
-
GPM 匹配模式,例如
REPEATABLE ELEMENTS
。 - $msg
-
自由形式消息。
- $msgTitle
-
自由形式消息标题。
- $namespaceList
-
过程命名空间列表,例如
apoc.math.
。 - $operation
-
数学运算,例如
除以零
、>
。 - $option
-
选项名称
- $optionList
-
选项名称列表。
- $param
-
参数名称,例如
$pattern
。 - $paramList
-
参数列表,例如
$pattern, $prop
。 - $pat
-
模式,例如
(:Person)
。 - $port
-
端口名称,例如
6362
。 - $portList
-
端口名称列表,例如
6362, 6000, 7000
。 - $pos
-
一个位置,例如序列中的位置,例如
2
- $pred
-
一个谓词,例如
x = 3
。 - $predList
-
谓词列表,例如
'x = 3', 'y > 4'
。 - $preparserInput
-
预解析器输入的一部分。
- $proc
-
过程名称,例如
db.labels()
。 - $procClass
-
用户定义过程实现类名称,例如
MyProcedureClass
。 - $procExeMode
-
过程执行模式,
READ
、WRITE
、SCHEMA
和DBMS
之一。 - $procField
-
用户定义过程实现类参数名称,例如
myArgument
。 - $procFieldType
-
用户定义过程实现类参数类型,
input
或output
之一。 - $procFun
-
过程或函数名称或 ID,例如
db.labels()
或collect()
。 - $procMethod
-
用户定义过程实现类方法名称,例如
myProcedureMethod
- $procParam
-
用户定义过程实现参数名称。
- $procParamFmt
-
自由形式用户定义过程实现参数格式,例如
com.example.*
。 - $propKey
-
属性键名称,例如
name
。 - $propKeyList
-
属性键名称列表,例如
name, age, hometown
。 - $query
-
从数据库检索或向数据库写入信息的语句,例如
MATCH (n) WHERE n.prop
。 - $reasonList
-
失败原因列表。
- $relType
-
关系类型名称,例如
KNOWS
。 - $replacement
-
自由形式文本、弃用功能的替代、Cypher 命令等。
- $role
-
RBAC 角色名称,例如
admin
、public
、receptionist
。 - $routingPolicy
-
路由策略名称。
- $runtime
-
Cypher 运行时名称。
slotted
、pipelined
和parallel
之一。 - $schemaDescr
-
Schema 描述符,例如
(:Label1 {prop1})
。 - $schemaDescrType
-
Schema 描述符的自由形式类型,例如
label property existence constraint
。 - $selector
-
GPM 路径选择器,例如
ALL PATHS
、SHORTEST 2
等。 - $selectorType
-
选择器类型。
- $server
-
服务器名称或 ID,例如
25a7efc7-d063-44b8-bdee-f23357f89f01
。 - $serverList
-
服务器名称或 ID 列表,例如
'server-1', 'server-2'
。 - $serverType
-
服务器类型,
PRIMARY
(primaryConstrained)、SECONDARY
(secondaryConstrained) 或NONE
。 - $serverAddress
-
服务器地址,例如
localhost:20025
。 - $sig
-
过程或函数签名,例如
date(input = DEFAULT_TEMPORAL_ARGUMENT :: ANY) :: DATE
- $syntax
-
Cypher 语法或关键字。
- $temporal
-
时间值,例如
2025-02-18
。 - $timeAmount
-
时间单位的整数数量(一个数字)。
- $timeUnit
-
常见时间单位名称,例如
seconds
、minutes
、hours
。 - $token
-
Token 名称,例如
MyLabel
、MyRelationshipType
、myPropertyKey
。 - $tokenId
-
Token ID。
- $tokenType
-
标签、关系类型或属性键之一。
- $transactionId
-
正在运行的查询的事务 ID。
- $typeDescription
-
类型的自由形式描述,例如“一个列表”。
- $upper
-
范围的最高接受数字。
- $url
-
一个 URL,例如 https://example.com。
- $user
-
一个用户名,例如
neo4j
。 - $value
-
某个值。
- $valueList
-
值列表。
- $valueType
-
Cypher 值类型,例如
STRING
、BOOLEAN
、INTEGER
、LIST<STRING>
等。 - $valueTypeList
-
Cypher 值类型列表。
- $variable
-
变量名称,例如
n
。 - $variableList
-
变量名称列表,例如
a, b, c
。