Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Neo4j数据一致性问题_Java_Neo4j - Fatal编程技术网

Java Neo4j数据一致性问题

Java Neo4j数据一致性问题,java,neo4j,Java,Neo4j,使用以下设置访问neo4j数据库时,我得到了空结果错误 Neo4j在docker中运行 上载程序进程连续运行,每个进程之间的睡眠时间为0.5秒 上传 读卡器进程也持续运行 读者: Driver driver = GraphDatabase.driver("bolt://db_address:7687", AuthTokens.basic("user", "password")); while (true) { try (Session session = driver.sessio

使用以下设置访问neo4j数据库时,我得到了空结果错误

  • Neo4j在docker中运行
  • 上载程序进程连续运行,每个进程之间的睡眠时间为0.5秒 上传
  • 读卡器进程也持续运行
读者:

Driver driver = GraphDatabase.driver("bolt://db_address:7687", AuthTokens.basic("user", "password"));
while (true) { 
    try (Session session = driver.session(AccessMode.READ)) {
        for (int i = 1; i <= 100; i++) {
            session.run("Match (n:Number) where n.value=$value return ID(n)", parameters("value", i)).single().get(0).asInt();
        }
    }
    Thread.sleep(500);
}
Driver-Driver=GraphDatabase.Driver(“bolt://db_address:7687,AuthTokens.basic(“用户”、“密码”);
虽然(正确){
try(Session Session=driver.Session(AccessMode.READ)){

对于(int i=1;i您需要调用
tx.success()
来提交事务


PS:不确定为什么每次上传时都会清除数据库

我尝试了建议的解决方案,但我有相同的错误。我想刷新数据库的全部内容,因此每次更新时都会清除。如果这类测试依赖于线程休眠和删除数据库,那么它是非常脆弱的-你能不能先清除数据库并检查一下如果节点被写入?我同意这种并发测试的缺点,但它提供了与我的应用程序相同的错误,当然它可以写入数据库。但是正如我在问题中提到的,我的“阅读器应用程序”有时会看到空数据库,这应该是不可能的,因为“上传程序”在一个事务中清除和填充数据库。
Driver driver = GraphDatabase.driver("bolt://db_address:7687", AuthTokens.basic("user", "password"));
while (true) {
    try (Session session = driver.session(AccessMode.WRITE)) {
        try (Transaction tx = session.beginTransaction()) {
            tx.run("MATCH (n) DELETE n");
            for (int i = 1; i <= 100; i++) {
                tx.run("CREATE (n:Number {value: $value}) return ID(n)", parameters("value", i)).single().get(0).asInt();
            }
            tx.success();
        }
    }
    Thread.sleep(500);
}