如何解决Neo4j“在执行架构修改后尝试执行写入查询”错误
我使用的是最新版本的 Neo4j 和 Java 驱动程序,但我的代码不断出现以下错误:
线程“main” org.neo4j.driver.exceptions.ClientException 中的异常:尝试在执行架构修改后执行写入查询
这是我的代码:
import org.neo4j.driver.*;
public class HelloWorldExample implements AutoCloseable
{
private final Driver driver;
public HelloWorldExample( String uri,String user,String password )
{
driver = GraphDatabase.driver( uri,AuthTokens.basic( user,password ) );
}
@Override
public void close() throws Exception
{
driver.close();
}
public void printGreeting( final String message )
{
try ( Session session = driver.session() )
{
String greeting = session.writeTransaction( new TransactionWork<String>()
{
@Override
public String execute( Transaction tx )
{
//ISSUE HERE
String test = "CREATE INDEX qwert IF NOT EXISTS FOR (m:pode) ON (m.made)";
Result hello = tx.run(test);
String test2 = "CREATE(n:Node)";
Result hello2 = tx.run(test2);
//ISSUE ABOVE
return "";
// return result.single().get( 0 ).asstring();
}
} );
System.out.println( greeting );
}
}
public static void main( String... args ) throws Exception
{
try ( HelloWorldExample greeter = new HelloWorldExample( "bolt://localhost:7687","neo4j","Neo4J" ) )
{
greeter.printGreeting( "hello,world" );
}
}
}
我知道错误发生在“ISSUE HERE”部分,如果我删除“CREATE”行中的任何一行,它就会消失,但我需要两行,但不知道如何继续。任何帮助表示赞赏!
解决方法
该错误表明您无法在单个事务中组合架构和写入查询。
将两个查询拆分为两个事务。 在第一个事务中定义索引,然后在第二个事务中创建一个节点。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。