我在关闭 berkeley db 上的一些商店时遇到了打开光标的例外情况:
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()”上:
public void close() throws DatabaseException {
myStore.close();
myDB.close();
env.close();
}
但我没有手动打开任何光标。
我一直在寻找这个错误,但没有发现我必须做的任何特别的事情(因为我没有手动打开光标)。
所以我认为我在打开数据库时做错了。我在开店时要做的事情:
myStore = new EntityStore(env, "StoreTest", storeConfig);
PrimaryIndex<Long, MYClass> myPrimaryIndex = myStore.getPrimaryIndex(Long.class, MyClass.class);
再说一遍:我没有手动打开任何光标。