问题描述
我使用的是最新版本的 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”行中的任何一行,它就会消失,但我需要两行,但不知道如何继续。任何帮助表示赞赏!
解决方法
该错误表明您无法在单个事务中组合架构和写入查询。
将两个查询拆分为两个事务。 在第一个事务中定义索引,然后在第二个事务中创建一个节点。