通知代码列表
以下页面提供了 Neo4j 中所有通知的概述,包括 GQLSTATUS 代码和 Neo4j 代码,以及一些场景及其可能的解决方案。
请注意,尽管 GQLSTATUS 代码保持稳定(对其进行的任何更改都将是破坏性的),但与这些代码相关的状态描述的更改不是破坏性的,并且可能随时发生。因此,不建议解析状态描述或将其集成到脚本中。 |
PERFORMANCE
通知
当查询使用成本较高的操作,并且可以通过更改查询或添加索引来提高性能时,会返回性能通知。
笛卡尔积
当执行计划中存在笛卡尔积时,会返回此通知。
Neo4j 代码 |
|
标题 |
此查询在断开连接的模式之间构建笛卡尔积。 |
描述 |
如果查询的一部分包含多个断开连接的模式,这将在所有这些部分之间构建笛卡尔积。这可能会产生大量数据并减慢查询处理速度。虽然有时是故意的,但通常可以通过重写查询来避免使用这种交叉乘积,例如通过在不同部分之间添加关系或使用 OPTIONAL MATCH ( |
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
信息:笛卡尔积。断开连接的模式 |
分类 |
|
严重程度级别 |
|
- 查询
-
MATCH (c:Child), (p:Parent) RETURN c, p
- 返回的 GQLSTATUS 代码
-
03N90
- 返回的状态描述
-
信息:笛卡尔积。断开连接的模式
(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 代码 |
|
状态描述 |
信息:无边界变长模式。提供的模式 |
分类 |
|
严重程度级别 |
|
- 查询
-
MATCH p=shortestPath((n)-[*]->(m)) WHERE n <> m RETURN p
- 返回的 GQLSTATUS 代码
-
03N91
- 返回的状态描述
-
信息:无边界变长模式。提供的模式
(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 代码 |
|
状态描述 |
信息:穷举最短路径。由于存在谓词 |
分类 |
|
严重程度级别 |
|
- 查询
-
MATCH p = shortestPath(()-[*..42]-()) WHERE ANY(n in nodes(p) WHERE n:Label) RETURN p
- 返回的 GQLSTATUS 代码
-
03N92
- 返回的状态描述
-
信息:穷举最短路径。由于存在谓词
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 代码 |
|
状态描述 |
信息:无适用的索引。 |
分类 |
|
严重程度级别 |
|
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
- 返回的状态描述
-
信息:无适用的索引。
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 代码 |
|
状态描述 |
信息: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
- 返回的状态描述
-
信息: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 代码 |
|
状态描述 |
信息:动态属性。标签/类型 |
分类 |
|
严重程度级别 |
|
- 查询
-
MATCH (n:Person) WHERE n[$prop] IS NOT NULL RETURN n;
- 返回的 GQLSTATUS 代码
-
03N95
- 返回的状态描述
-
信息:动态属性。标签/类型
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
- 返回的状态描述
-
信息:动态属性。标签/类型
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 代码 |
|
状态描述 |
信息:代码生成失败。生成代码失败,回退到解释型 $enginetype 引擎。可以在 debug.log 中找到堆栈跟踪。原因:$msg。 |
分类 |
|
严重程度级别 |
|
HINT
通知
默认情况下,当 Cypher 规划器或运行时无法创建满足指定提示(例如 JOIN
或 INDEX
)的查询计划时,会返回 HINT
通知。可以通过将配置 dbms.cypher.hints_error
设置为 true
来更改 Cypher 规划器或运行时的此行为。在这种情况下,查询将返回错误。
Join 提示无法满足
Neo4j 代码 |
|
标题 |
数据库无法规划带提示的 join。 |
描述 |
未规划带提示的 join。这可能是因为没有生成的计划包含 join 键,请尝试使用不同的 join 键或重组您的查询。( |
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
警告: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
- 返回的状态描述
-
警告:joint 提示无法满足。无法使用
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 代码 |
|
状态描述 |
警告:未找到提示的索引。无法使用 |
分类 |
|
严重程度级别 |
|
- 查询
-
MATCH (a: Label) USING INDEX a:Label(id) WHERE a.id = 1 RETURN a
- 返回的 GQLSTATUS 代码
-
01N31
- 返回的状态描述
-
警告:未找到提示的索引。无法使用
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
- 返回的状态描述
-
警告:未找到提示的索引。无法使用
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
通知
当查询或命令提及系统未知实体时,会返回 Unrecognized 通知。
未找到 Home 数据库
Neo4j 代码 |
|
标题 |
请求引用了不存在的 home 数据库。 |
描述 |
提供的 home 数据库在 DBMS 中当前不存在。此命令直到创建该数据库后才会生效。( |
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
注意:成功完成 - 未找到 home 数据库。数据库 |
分类 |
|
严重程度级别 |
|
home
数据库设置为不存在的数据库- 查询
-
CREATE USER john SET PASSWORD "secret" SET HOME DATABASE nej4
- 返回的 GQLSTATUS 代码
-
00N50
- 返回的状态描述
-
注意:成功完成 - 未找到 home 数据库。数据库
ne4j
不存在。请验证拼写是否正确或创建该数据库以使命令生效。 - 改进建议
-
验证 home 数据库名称是否拼写错误。
- 查询
-
CREATE USER john SET PASSWORD "secret" SET HOME DATABASE nej4
- 返回代码的描述
-
提供的 home 数据库在 DBMS 中当前不存在。此命令直到创建该数据库后才会生效。(HOME DATABASE:
nej4
) - 改进建议
-
验证 home 数据库名称是否拼写错误。
未知标签
Neo4j 代码 |
|
标题 |
提供的标签不在数据库中。 |
描述 |
您查询中的某个标签在数据库中不可用,请确保您没有拼写错误或在应用程序中运行此语句时该标签可用。( |
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
警告:未知标签。标签 |
分类 |
|
严重程度级别 |
|
- 查询
-
MATCH (n:Perso) RETURN n
- 返回的 GQLSTATUS 代码
-
01N50
- 返回的状态描述
-
警告:未知标签。标签
Perso
不存在。请验证拼写是否正确。 - 改进建议
-
验证标签是否拼写错误。如果您打算将来使用该标签创建节点,则无需更改。
- 查询
-
MATCH (n:Perso) RETURN n
- 返回代码的描述
-
您查询中的某个标签在数据库中不可用,请确保您没有拼写错误或在应用程序中运行此语句时该标签可用(缺失的标签名称为:
Perso
)。 - 改进建议
-
验证标签是否拼写错误。如果您计划将来使用该标签创建节点,则无需更改。
未知关系类型
Neo4j 代码 |
|
标题 |
提供的关系类型不在数据库中。 |
描述 |
您查询中的某个关系类型在数据库中不可用,请确保您没有拼写错误或在应用程序中运行此语句时该标签可用。( |
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
警告:未知关系类型。关系类型 |
分类 |
|
严重程度级别 |
|
- 查询
-
MATCH (n)-[:NonExistingType]->() RETURN n
- 返回的 GQLSTATUS 代码
-
01N51
- 返回的状态描述
-
警告:未知关系类型。关系类型
NonExistingType
不存在。请验证拼写是否正确。 - 改进建议
-
验证关系类型是否拼写错误。如果您计划将来创建此类型的关系,则无需更改。
- 查询
-
MATCH (n)-[:NonExistingType]->() RETURN n
- 返回代码的描述
-
您查询中的某个关系类型在数据库中不可用,请确保您没有拼写错误或在应用程序中运行此语句时该标签可用(缺失的关系类型为:
NonExistingType
)。 - 改进建议
-
验证关系类型是否拼写错误。如果您计划将来创建此类型的关系,则无需更改。
未知属性键
Neo4j 代码 |
|
标题 |
提供的属性键不在数据库中 |
描述 |
您查询中的某个属性名称在数据库中不可用,请确保您没有拼写错误或在应用程序中运行此语句时该标签可用。( |
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
警告:未知属性键。属性 |
分类 |
|
严重程度级别 |
|
- 查询
-
MATCH (n:Person {nme:”Tom”}) RETURN n
- 返回的 GQLSTATUS 代码
-
01N52
- 返回的状态描述
-
警告:未知属性键。属性
nme
不存在。请验证拼写是否正确。 - 改进建议
-
验证属性键是否拼写错误。如果您计划将来创建该属性键,则无需更改。
- 查询
-
MATCH (n:Person {nme:”Tom”}) RETURN n
- 返回代码的描述
-
您查询中的某个属性名称在数据库中不可用,请确保您没有拼写错误或在应用程序中运行此语句时该标签可用(缺失的属性名称为:
nme
)。 - 改进建议
-
验证属性键是否拼写错误。如果您计划将来创建该属性键,则无需更改。
聚合跳过空值
Neo4j 代码 |
|
标题 |
查询包含跳过空值的聚合函数。 |
描述 |
查询包含跳过空值的聚合函数。 |
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
警告:集合函数中排除了空值。 |
分类 |
|
严重程度级别 |
|
- 查询
-
UNWIND [1, NULL, 2] AS i RETURN count(i) AS sum
- 返回的 GQLSTATUS 代码
-
01G11
- 返回的状态描述
-
警告:集合函数中排除了空值。
- 查询
UNWIND [1, NULL, 2] AS i RETURN count(i) AS sum
- 返回代码的描述
-
查询包含跳过空值的聚合函数。
UNSUPPORTED
通知
当查询或命令尝试使用当前系统不支持的功能或不应在生产环境中使用实验性功能时,会返回 Unsupported 通知。
不支持的运行时
Neo4j 代码 |
|
标题 |
所选的运行时不支持此查询。 |
描述 |
所选的运行时不支持此查询,请使用其他运行时或回退到默认值。( |
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
警告:不支持的运行时。无法使用 |
分类 |
|
严重程度级别 |
|
- 查询
-
EXPLAIN CYPHER runtime=pipelined SHOW INDEXES YIELD *
- 返回的 GQLSTATUS 代码
-
01N40
- 返回的状态描述
-
警告:不支持的运行时。无法使用
runtime=pipelined
执行查询,使用的是runtime=slotted
。原因:Pipelined 尚不支持包含ShowIndexes
的计划,请使用其他运行时。 - 改进建议
-
使用不同的运行时或删除运行时选项以使用默认运行时运行查询
SHOW INDEXES YIELD *
- 查询
-
CYPHER runtime=pipelined SHOW INDEXES YIELD *
- 返回代码的描述
-
所选的运行时不支持此查询,请使用其他运行时或回退到默认值。(Pipelined 尚不支持包含
ShowIndexes
的计划,请使用其他运行时。) - 改进建议
-
使用不同的运行时或删除运行时选项以使用默认运行时运行查询
SHOW INDEXES YIELD *
实验性运行时
自 Neo4j 5.14 起,已移除此通知的使用。 |
Neo4j 代码 |
|
标题 |
此功能是实验性的,不应在生产系统中使用。 |
描述 |
您正在使用实验性功能。( |
类别 |
|
严重程度级别 |
|
- 查询
-
CYPHER runtime=parallel MATCH (n) RETURN (n)
- 返回代码的描述
-
您正在使用实验性功能(并行运行时是实验性的,可能存在不稳定和潜在的正确性问题)。
- 改进建议
-
并行运行时不应在生产环境中使用。请选择其他运行时或删除选项以使用默认运行时
MATCH (n) RETURN (n)
DEPRECATION
通知
弃用通知包含有关已弃用的功能或特性信息。请务必改为使用新功能,否则将来版本中查询可能会中断。
功能已弃用
Neo4j 代码 |
|
标题 |
此功能已弃用,将在未来版本中移除。 |
描述 |
|
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
警告:功能已弃用。$msg |
分类 |
|
严重程度级别 |
|
- 查询
-
CREATE DATABASE foo.bar
- 返回的 GQLSTATUS 代码
-
01N00
- 返回的状态描述
-
警告:功能已弃用。带有未转义
.
的数据库和别名已弃用,除非用于指示它们属于复合数据库。包含.
的名称应进行转义。(名称:foo.bar) - 改进建议
-
如果不是用于复合数据库,请使用字符
`
转义名称。CREATE DATABASE `foo.bar`
- 查询
-
CREATE DATABASE foo.bar
- 返回代码的描述
-
带有未转义
.
的数据库和别名已弃用,除非用于指示它们属于复合数据库。包含.
的名称应进行转义。(名称:foo.bar
)
UNION
子句中使用不同顺序的返回项- 查询
-
RETURN 'val' as one, 'val' as two UNION RETURN 'val' as two, 'val' as one
- 返回的 GQLSTATUS 代码
-
01N00
- 返回的状态描述
-
警告:功能已弃用。UNION [ALL] 中的所有子查询应具有相同的返回列顺序。在 UNION [ALL] 子句中使用不同顺序的返回项已弃用,并将在未来版本中移除。
在版本 5.5 到 5.25 中,在 UNION [ALL] 子句中使用不同顺序的返回项已弃用。然而,自版本 5.26 起,经过成本效益分析和有价值的用户反馈,该弃用已撤回。 |
- 查询
-
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
- 查询
-
RETURN 1 as my\u0085identifier
- 返回的 GQLSTATUS 代码
-
01N00
- 返回的状态描述
-
警告:功能已弃用。Unicode 字符
\u0085
已弃用于未转义的标识符,将来将被视为空白字符。要继续使用它,请通过在标识符my\u0085identifier
周围添加反引号来转义标识符。
- 查询
-
RETURN 1 as my\u0085identifier
- 返回代码的描述
-
Unicode 字符
\u0085
已弃用于未转义的标识符,将来将被视为空白字符。要继续使用它,请通过在标识符my\u0085identifier
周围添加反引号来转义标识符。
功能已弃用,有替代方案
Neo4j 代码 |
|
标题 |
此功能已弃用,将在未来版本中移除。 |
描述 |
|
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
警告:功能已弃用,有替代方案。 |
分类 |
|
严重程度级别 |
|
|:
后的冒号- 查询
-
MATCH (a)-[:A|:B|:C]-() RETURN *
- 返回的 GQLSTATUS 代码
-
01N01
- 返回的状态描述
-
警告:功能已弃用,有替代方案。
: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
- 返回的状态描述
-
警告:功能已弃用,有替代方案。
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
- 返回的状态描述
-
警告:功能已弃用,有替代方案。
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
- 返回的状态描述
-
警告:功能已弃用,有替代方案。
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
- 返回的状态描述
-
警告:功能已弃用,有替代方案。
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
- 返回的状态描述
-
警告:功能已弃用,有替代方案。
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
- 返回的状态描述
-
警告:功能已弃用,有替代方案。
cdc.query
已弃用。它被db.cdc.query
替代。
CALL unsupported.dbms.shutdown
- 返回的 GQLSTATUS 代码
-
01N02
- 返回的状态描述
-
警告:功能已弃用,无替代方案。
unsupported.dbms.shutdown
已弃用,将在无替代方案的情况下移除。
CALL unsupported.dbms.shutdown
- 返回代码的描述
-
查询使用了已弃用的过程:
'unsupported.dbms.shutdown'
。 - 改进建议
-
移除对已弃用过程的使用。如果存在建议的替代方案,请更新为使用替代方案。
- 查询
-
MATCH (a) RETURN id(a)
- 返回的 GQLSTATUS 代码
-
01N01
- 返回的状态描述
-
警告:功能已弃用,有替代方案。
id
已弃用。它被elementId()
替代。 - 改进建议
-
请改为使用函数
elementId()
。MATCH (a) RETURN elementId(a)
- 查询
-
MATCH (a) RETURN id(a)
- 返回的 GQLSTATUS 代码
-
01N02
- 返回的状态描述
-
警告:功能已弃用,无替代方案。
id
已弃用,将在无替代方案的情况下移除。
- 查询
-
MATCH (a) RETURN id(a)
- 返回代码的描述
-
查询使用了已弃用的函数:
id
。 - 改进建议
-
请改为使用函数
elementId()
。MATCH (a) RETURN elementId(a)
- 查询
-
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
- 返回的状态描述
-
警告:功能已弃用,有替代方案。
(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
- 返回的状态描述
-
警告:功能已弃用,有替代方案。
-[where {p: 5}]-
已弃用。它被-[`where` {p: 5}]-
替代。 - 改进建议
-
要继续使用此名称的变量,请使用反引号转义变量名称
MATCH ()-[`where` {p: 5}]->() RETURN `where`.p
CASE
表达式中将未加括号的标签表达式谓词用作 +
的右侧操作数- 查询
-
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 m, n.truthCodes AS listOfBooleans RETURN listOfBooleans + m:A
- 返回的 GQLSTATUS 代码
-
01N01
- 返回的状态描述
-
警告:功能已弃用,有替代方案。
… + m:A
已弃用。它被… + (m:A)
替代。 - 改进建议
-
对
+
右侧的标签表达式谓词加上括号MATCH (n)-[r]->(m) WITH m, n.truthCodes AS listOfBooleans RETURN listOfBooleans + (m:A)
CASE
表达式中将未加括号的标签表达式谓词用作 +
的右侧操作数- 查询
-
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)
- 查询
-
MATCH (n)-[r]->(m) WITH r, n.truthCodes AS listOfBooleans RETURN listOfBooleans + r:C|D
- 返回的 GQLSTATUS 代码
-
01N01
- 返回的状态描述
-
警告:功能已弃用,有替代方案。
… + 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
- 返回代码的描述
- '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
- 返回的 GQLSTATUS 代码
-
01N01
- 返回的状态描述
-
警告:功能已弃用,有替代方案。
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
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
- 返回代码的描述
-
'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
- 返回的 GQLSTATUS 代码
-
01N01
- 返回的状态描述
-
警告:功能已弃用,有替代方案。
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
- 返回代码的描述
-
'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
- 返回的 GQLSTATUS 代码
-
01N01
- 返回的状态描述
-
警告:功能已弃用,有替代方案。
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
表达式中对名为 in
且未转义的变量使用 []
算子,位于 WHEN
操作数内- 查询
-
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
- 查询
-
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
- 返回的状态描述
-
警告:功能已弃用,有替代方案。
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
表达式中对名为 in
且未转义的变量使用 []
算子,位于 WHEN
操作数内- 查询
-
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
- 查询
-
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
- 返回的状态描述
-
警告:功能已弃用,有替代方案。
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 代码 |
|
状态描述 |
警告:功能已弃用,无替代方案。 |
分类 |
|
严重程度级别 |
|
connectComponentsPlanner
- 查询
-
CYPHER connectComponentsPlanner=greedy MATCH (a), (b) RETURN *
- 返回的 GQLSTATUS 代码
-
01N02
- 返回的状态描述
-
警告:功能已弃用,无替代方案。
connectComponentsPlanner
已弃用,将在无替代方案的情况下移除。
- 查询
-
CYPHER connectComponentsPlanner=greedy MATCH (a), (b) RETURN *
- 返回代码的描述
-
Cypher 查询选项
connectComponentsPlanner
已弃用,将在无替代方案的情况下移除。产品在组合子计划时使用基于成本的 IDP 搜索算法的默认行为将被保留。更多信息,请参阅 Cypher 手册 → Cypher 规划器。
SECURITY
通知
安全通知指示查询或命令的结果可能存在潜在的安全问题。请验证这是否是您的查询或命令的预期行为。
角色或权限未分配
Neo4j 代码 |
|
标题 |
|
描述 |
|
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
注意:成功完成 - 角色或权限未分配。 |
分类 |
|
严重程度级别 |
|
*<command>
和 cmd
可以是用户给出的完整命令,也可以是给定命令的子集。
- 命令
-
REVOKE ROLE admin, reader FROM jane
- 返回的 GQLSTATUS 代码
-
00N71
- 返回的状态描述
-
注意:成功完成 - 角色或权限未分配。
REVOKE ROLE reader FROM jane
无效。该角色或权限未分配。 - 改进建议
-
验证这是预期的角色和用户。
- 命令
-
REVOKE ROLE admin, reader FROM jane
- 返回代码的标题
-
REVOKE ROLE reader FROM jane
无效。 - 返回代码的描述
-
用户没有该角色。更多信息请参阅状态码文档。
- 改进建议
-
验证这是预期的角色和用户。
- 命令
-
REVOKE WRITE ON GRAPH * FROM reader
- 返回的 GQLSTATUS 代码
-
00N71
- 返回的状态描述
-
注意:成功完成 - 角色或权限未分配。
REVOKE DENY WRITE ON GRAPH * FROM reader
无效。该角色或权限未分配。 - 改进建议
-
验证这是预期的权限和角色。
- 命令
-
REVOKE WRITE ON GRAPH * FROM reader
- 返回代码的标题
-
REVOKE DENY WRITE ON GRAPH * FROM reader
无效。 - 返回代码的描述
-
该角色没有该权限。更多信息请参阅状态码文档。
- 改进建议
-
验证这是预期的权限和角色。
角色或权限已分配
Neo4j 代码 |
|
标题 |
|
描述 |
|
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
注意:成功完成 - 角色或权限已分配。 |
分类 |
|
严重程度级别 |
|
*<command>
和 cmd
可以是用户给出的完整命令,也可以是给定命令的子集。
- 命令
-
GRANT ROLE admin TO john
- 返回的 GQLSTATUS 代码
-
00N70
- 返回的状态描述
-
注意:成功完成 - 角色或权限已分配。
GRANT ROLE admin TO john
无效。该角色或权限已分配。 - 改进建议
-
验证这是预期的角色和用户。
- 命令
-
GRANT ROLE admin TO john
- 返回代码的标题
-
GRANT ROLE admin TO john
无效。 - 返回代码的描述
-
用户已拥有该角色。更多信息请参阅状态码文档。
- 改进建议
-
验证这是预期的角色和用户。
- 命令
-
GRANT TRAVERSE ON GRAPH * TO reader
- 返回的 GQLSTATUS 代码
-
00N70
- 返回的状态描述
-
注意:成功完成 - 角色或权限已分配。
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
- 返回的状态描述
-
警告:不可能的撤销命令。
REVOKE ROLE manager FROM jane
无效。角色不存在。请确保没有拼写错误。此通知将在未来的主要版本中变为错误。 - 改进建议
-
验证这是预期的角色,并且拼写正确。
- 命令
-
REVOKE ROLE manager, reader FROM jane
- 返回代码的标题
-
REVOKE ROLE manager FROM jane
无效。 - 返回代码的描述
-
角色不存在。请确保没有拼写错误。此通知将在未来的主要版本中变为错误。更多信息请参阅状态码文档。
- 改进建议
-
验证这是预期的角色,并且拼写正确。
- 命令
-
REVOKE ROLE reader FROM alice
- 返回的 GQLSTATUS 代码
-
01N70
- 返回的状态描述
-
警告:不可能的撤销命令。
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
- 返回的状态描述
-
警告:不可能的撤销命令。
REVOKE GRANT WRITE ON GRAPH * FROM manager
无效。角色不存在。请确保没有拼写错误。此通知将在未来的主要版本中变为错误。 - 改进建议
-
验证这是预期的角色,并且拼写正确。
- 命令
-
REVOKE GRANT WRITE ON GRAPH * FROM manager
- 返回代码的标题
-
REVOKE GRANT WRITE ON GRAPH * FROM manager
无效。 - 返回代码的描述
-
角色不存在。请确保没有拼写错误。此通知将在未来的主要版本中变为错误。更多信息请参阅状态码文档。
- 改进建议
-
验证这是预期的角色,并且拼写正确。
- 命令
-
REVOKE GRANT WRITE ON GRAPH neo3j FROM editor
- 返回的 GQLSTATUS 代码
-
01N70
- 返回的状态描述
-
警告:不可能的撤销命令。
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
- 返回的状态描述
-
警告:不可能的撤销命令。
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
- 返回的状态描述
-
警告:不可能的撤销命令。
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
- 返回的状态描述
-
警告:不可能的撤销命令。
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 代码 |
|
状态描述 |
注意:成功完成 - 未定义身份验证提供者。身份验证提供者 { $auth } 未在配置中定义。请验证拼写是否正确,或在配置中定义 { $auth }。 |
分类 |
|
严重程度级别 |
|
- 命令
-
CREATE USER foo SET AUTH 'unknownProvider' { SET ID 'idString' }
- 返回代码的描述
-
身份验证提供者
unknownProvider
未在配置中定义。请验证拼写是否正确,或在配置中定义unknownProvider
。 - 改进建议
-
确保给定的提供者是正确的,如果不是则替换它。如果正确,请确保将其作为已知身份验证提供者添加到
dbms.security.authentication_providers
和/或dbms.security.authorization_providers
中。
- 命令
-
CREATE 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
中。
- 命令
-
ALTER USER foo SET AUTH 'unknownProvider' { SET ID 'idString' }
- 返回的 GQLSTATUS 代码
-
00N72
- 返回的状态描述
-
注意:成功完成 - 未定义身份验证提供者。身份验证提供者
unknownProvider
未在配置中定义。请验证拼写是否正确,或在配置中定义unknownProvider
。 - 改进建议
-
确保给定的提供者是正确的,如果不是则替换它。如果正确,请确保将其作为已知身份验证提供者添加到
dbms.security.authentication_providers
和/或dbms.security.authorization_providers
中。
未启用用户的外部身份验证
Neo4j 代码 |
|
标题 |
未启用用户的外部身份验证。 |
描述 |
使用设置 |
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
警告:外部身份验证已禁用。请使用设置 'dbms.security.require_local_user' 启用外部身份验证。 |
分类 |
|
严重程度级别 |
|
- 命令
-
CREATE USER foo SET AUTH 'exampleProvider' { SET ID 'idString' }
- 改进建议
-
通过设置
dbms.security.require_local_user
启用链接用户。在启用之前,新的外部身份验证将被忽略,并且当前的外部身份验证行为将继续适用。
- 命令
-
CREATE 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
启用链接用户。在启用之前,新的外部身份验证将被忽略,并且当前的外部身份验证行为将继续适用。
- 命令
-
ALTER USER foo SET AUTH 'exampleProvider' { SET ID 'idString' }
- 返回的 GQLSTATUS 代码
-
01N71
- 返回的状态描述
-
警告:外部身份验证已禁用。请使用设置 'dbms.security.require_local_user' 启用外部身份验证。
- 改进建议
-
通过设置
dbms.security.require_local_user
启用链接用户。在启用之前,新的外部身份验证将被忽略,并且当前的外部身份验证行为将继续适用。
TOPOLOGY
通知
Topology 通知提供与管理数据库和服务器相关的附加信息。
服务器已启用
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
- 返回代码的描述
-
请求的拓扑与当前拓扑匹配。没有更改分配。
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
不存在。 - 改进建议
-
验证这是预期的约束,并且拼写正确。
GENERIC
通知
GENERIC
通知代码不属于任何更广泛的类别,彼此之间没有联系。
子查询变量隐藏
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 代码 |
|
标题 |
当过程调用空过程时,使用 |
描述 |
由于 |
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
信息:冗余的可选过程。由于 |
分类 |
|
严重程度级别 |
|
OPTIONAL
- 查询
-
OPTIONAL CALL db.createLabel("A")
- 返回的 GQLSTATUS 代码
-
03N61
- 返回的状态描述
-
信息:冗余的可选过程。由于
CALL db.createLabel
是一个空过程,使用OPTIONAL
是冗余的。 - 改进建议
-
如果查询的预期行为是使用空过程,则可以删除
OPTIONAL
关键字,而不会影响查询。CALL db.createLabel("A")
- 查询
-
OPTIONAL CALL db.createLabel("A")
- 返回代码的描述
-
由于
CALL db.createLabel
是一个空过程,使用OPTIONAL
是冗余的。 - 改进建议
-
如果查询的预期行为是使用空过程,则可以删除
OPTIONAL
关键字,而不会影响查询。CALL db.createLabel("A")
冗余的可选子查询
Neo4j 代码 |
|
标题 |
当 |
描述 |
由于 |
类别 |
|
GQLSTATUS 代码 |
|
状态描述 |
信息:冗余的可选子查询。由于 |
分类 |
|
严重程度级别 |
|
CALL
子查询中冗余使用 OPTIONAL
- 查询
-
UNWIND [1, 2, 3] AS x OPTIONAL CALL (x) { CREATE({i:x}) }
- 返回的 GQLSTATUS 代码
-
03N62
- 返回代码的描述
-
信息:冗余的可选子查询。由于
CALL
是一个单元子查询,使用OPTIONAL
是冗余的。 - 改进建议
-
如果查询的预期行为是子查询不返回任何值,则可以删除
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 被重复引用)