微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Neo4j“在执行架构修改后尝试执行写入查询”错误

如何解决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 举报,一经查实,本站将立刻删除。