orientdb:如何完全关闭内存数据库(Java/ScalaAPI)
我正在尝试为scala中的orientDB客户机编写一些单元测试实用程序 下面是一个在DB上运行的函数,它应该用代码包装该函数,以便为单个单元测试创建和销毁DB 然而,关于如何清理内存数据库的文档并不多(而且在许多开源项目中,人们似乎只是泄漏数据库并在新端口上创建新数据库) 只要调用db.close,数据库就会监听端口,后续测试就会失败。调用db.drop似乎可行,但前提是func成功地将数据添加到db中 那么,在finally子句中需要什么清理呢orientdb:如何完全关闭内存数据库(Java/ScalaAPI),orientdb,Orientdb,我正在尝试为scala中的orientDB客户机编写一些单元测试实用程序 下面是一个在DB上运行的函数,它应该用代码包装该函数,以便为单个单元测试创建和销毁DB 然而,关于如何清理内存数据库的文档并不多(而且在许多开源项目中,人们似乎只是泄漏数据库并在新端口上创建新数据库) 只要调用db.close,数据库就会监听端口,后续测试就会失败。调用db.drop似乎可行,但前提是func成功地将数据添加到db中 那么,在finally子句中需要什么清理呢 @Test def fTest2():
@Test
def fTest2(): Unit = {
def withJSONDBLoan(func: ODatabaseDocumentTx => Unit) : Unit = {
val db: ODatabaseDocumentTx = new ODatabaseDocumentTx("memory:jsondb")
db.create()
try {
func(db)
} finally {
if (!db.isClosed){
db.close // Nope. DB is leaked.
}
// db.drop seems to close the DB but can't
// see when to safely call this.
}
}
val query1 = "insert into ouser set name='test',password='test', status='ACTIVE'"
withJSONDBLoan { db =>
db.command(new OCommandSQL(query1)).execute[ODocument]()
}
// Fails at create because DB already exists.
val query2 = "insert into ouser set name='test2',password='test2', status='ACTIVE'"
withJSONDBLoan { db =>
db.command(new OCommandSQL(query2)).execute[ODocument]()
}
}
我试过你的代码,它对我有效
希望有帮助。当然。它之所以有效是因为数据库泄露了。我将用失败的查询更新问题。