gpt4 book ai didi

java - 无法访问 OrientDB plocal 数据库。文件 '.ocf' 被另一个进程锁定

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:16:39 25 4
gpt4 key购买 nike

我有一些查询 OrientDB plocal 图形数据库的集成测试。

我有一个装置可以将一些数据加载到数据库中。如果夹具作为每个测试的 setUp() 方法的一部分加载,那么一切正常,测试按预期运行。

由于所有测试的夹具都是相同的,因此只加载一次夹具是有意义的,就在测试开始执行之前。

我正在使用 Maven 构建项目。在 pre-integration-test 阶段,我调用了一个 java 类(通过 exec-maven-plugin),它执行如下操作:

 String[] consoleArgs = { scriptUrl.getPath() };
OConsoleDatabaseApp consoleApp = new OConsoleDatabaseApp(consoleArgs);
try {
consoleApp.dropDatabase(iURL, TESTDB_USER, TESTDB_PASSWORD, storageType);
consoleApp.createDatabase(iURL, TESTDB_USER, TESTDB_PASSWORD, storageType, "graph");
} catch (IOException e1) {
throw new IllegalStateException(e1);
}

if (consoleApp.run() != 1) {
throw new IllegalStateException(ERROR_LOADING_SCHEMA);
}

consoleApp.disconnect();
consoleApp.close();

此类的调用正常结束,但是当第一个集成测试尝试访问数据库时,我失败了。

异常:

com.orientechnologies.orient.core.exception.OStorageException: Cannot open local storage 'target/databases/benchmark-integration' with mode=rw
Caused by: com.orientechnologies.orient.core.exception.OSerializationException: Cannot load database's configuration. The database seems to be corrupted.
Caused by: com.orientechnologies.common.concur.lock.OLockException: File 'target\databases\benchmark-integration\database.ocf' is locked by another process, maybe the database is in use by another process.

我好像忘记在加载夹具后释放一些东西。

最佳答案

在查看OConsoleDatabaseApp 实现中的static main 方法时找到了答案。

实例化并使用控制台后,执行下一行。

Orient.instance().shutdown();

这似乎释放了锁定的数据库。

关于java - 无法访问 OrientDB plocal 数据库。文件 '.ocf' 被另一个进程锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34399334/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com