Database clogin开放游标java berkeley db
我在关闭berkeley db上的一些商店时遇到了一个例外,即打开了cursos:Database clogin开放游标java berkeley db,database,cursor,berkeley-db-je,Database,Cursor,Berkeley Db Je,我在关闭berkeley db上的一些商店时遇到了一个例外,即打开了cursos: Exception in thread "main" java.lang.IllegalStateException: Database still has 1 open cursors while trying to close. at com.sleepycat.je.Database.closeInternal(Database.java:462) at com.sleepycat.je.D
Exception in thread "main" java.lang.IllegalStateException: Database still has 1 open cursors while trying to close.
at com.sleepycat.je.Database.closeInternal(Database.java:462)
at com.sleepycat.je.Database.close(Database.java:314)
at com.sleepycat.persist.impl.Store.closeDb(Store.java:1449)
at com.sleepycat.persist.impl.Store.close(Store.java:1058)
at com.sleepycat.persist.EntityStore.close(EntityStore.java:626)
此错误发生在“myStore.close()上”:
但我没有手动打开任何光标
我已经查找了这个错误,但没有找到任何需要执行的特殊操作(因为我没有手动打开光标)
所以我想我在打开数据库时做错了什么。我在开店时做什么:
myStore = new EntityStore(env, "StoreTest", storeConfig);
PrimaryIndex<Long, MYClass> myPrimaryIndex = myStore.getPrimaryIndex(Long.class, MyClass.class);
myStore=newentitystore(env,“StoreTest”,storeConfig);
PrimaryIndex myPrimaryIndex=myStore.getPrimaryIndex(Long.class,MyClass.class);
再次声明:我没有手动打开任何游标。对EntityIndex.entities()的任何调用都会打开游标,无论您是否将其分配给变量。因此,请确保将其分配给EntityCursor对象,然后调用其close()方法,如下所示:
EntityCursor<Employee> cursor = primaryIndex.entities();
try {
...
} finally {
cursor.close();
}
EntityCursor cursor=primaryIndex.entities();
试一试{
...
}最后{
cursor.close();
}
我也遇到过类似的问题,这就是解决方案,也发布在OTN论坛上:
EntityCursor<Employee> cursor = primaryIndex.entities();
try {
...
} finally {
cursor.close();
}