Neo4j 4.1中Cypher约束查询报「Invalid input 'F'」问题排查
问题分析与解决
1. 核心问题:Cypher语法不符合Neo4j 4.1规范
你写的约束创建语句用了FOR和REQUIRE关键字,但Neo4j 4.1版本的唯一约束语法不支持这两个关键字,解析器遇到FOR的首字母F时直接触发语法错误。
Neo4j 4.1创建唯一约束的正确语法是:
CREATE CONSTRAINT n_tester ON (n:Test) ASSERT n.Tester IS UNIQUE
2. 换行不影响语法执行
Cypher对语句换行没有强制要求,只要语法正确,换行或不换行都能正常解析,所以你添加换行后仍报错,和换行无关。
3. PHP json_encode的潜在问题排查
如果是通过PHP将Cypher语句编码后发送给Neo4j,需要检查两点:
- 确认编码后的语句和原语句完全一致,避免
json_encode对特殊字符(比如引号、反斜杠)做了不必要的转义。 - 排查是否在字符串传递过程中出现截断,导致Neo4j接收到不完整的语句,引发语法错误。
内容的提问来源于stack exchange,提问作者Antony
相关产品推荐
相关产品推荐

