neo4j - 如何幂等地创建 Neo4j 全文索引?
问题描述
我有一些运行 Cypher 初始化脚本的集成测试套件,我希望所有操作都是幂等的。
第一次运行CALL db.index.fulltext.createNodeIndex("usernames", ["User"], ["username"])
正常,但在随后的尝试中失败。
我努力了:
CALL apoc.do.when(
apoc.schema.node.indexExists("User", ["username"]),
'RETURN NULL',
'CALL db.index.fulltext.createNodeIndex("usernames", ["User"], ["username"])'
)
这导致:
Failed to invoke procedure `apoc.do.when`: Caused by: org.neo4j.graphdb.security.AuthorizationViolationException: Schema operations are not allowed for user 'neo4j' with roles [PUBLIC, admin] overridden by TOKEN_WRITE overridden by TOKEN_WRITE.
如何使用全文索引来实现这一点?
这是在 Neo4j 4.2.1
解决方案
您不能运行密码查询来删除/创建索引。但是您可以分两步删除/创建它,例如
CALL db.index.fulltext.drop("usernames") ;
CALL db.index.fulltext.createNodeIndex("usernames", ["User"], ["username"]) ;
推荐阅读
- sql - 对一行数据进行分组
- mpandroidchart - 执行该 BarChartRenderer.drawDataSet() 时,我的应用程序崩溃并且我得到 NullPointerException
- mobile - 如何实现appium移动端新特性:getContexts for android混合自动化
- c++ - 如何在 C++ 中异步运行代码行
- ravendb - 如何使用 RQL(Raven 查询语言)进行子查询?
- macos - RecordRTC - 在 Safari 上播放录音失败
- r - 在设置条件后按行号提取数据
- mule - mulesoft 批处理作业未执行
- flutter - 将参数传递给 AudioService 后台服务不起作用
- python - 合并工作表名称略有不同的多个文件