首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MapDB db.commit() db.close()的使用和问题

MapDB db.commit() db.close()的使用和问题
EN

Stack Overflow用户
提问于 2018-02-04 12:19:43
回答 1查看 732关注 0票数 3

我不明白当我使用MapDB时,我必须在什么地方、什么时候放置这两条指令:

代码语言:javascript
复制
db.commit()
db.close()  

提交是指当我修改数据库中的数据时,好的。但是每次我在方法中实例化这类对象(也就是说,每次我需要访问db时):

代码语言:javascript
复制
DB db = DBMaker.newFileDB(new File(FILE_NAME)).closeOnJvmShutdown().make();
ConcurrentNavigableMap<Integer, Offers> offerts= db.getTreeMap("offers");  

我是否必须将db.close()指令放在方法的末尾?那么db.commit()呢?只有当我修改数据的时候?

我问这个是因为我正面临着这样的错误:

代码语言:javascript
复制
java.lang.RuntimeException: Writer thread failed
Caused by: 
java.lang.ArrayIndexOutOfBoundsException: -1811939328
at org.mapdb.Volume$ByteBufferVol.tryAvailable(Volume.java:273)
at org.mapdb.Volume.ensureAvailable(Volume.java:58)
at org.mapdb.StoreWAL.replayLogFile(StoreWAL.java:621)
at org.mapdb.StoreWAL.commit(StoreWAL.java:579)
at org.mapdb.EngineWrapper.commit(EngineWrapper.java:95)
at org.mapdb.AsyncWriteEngine.access$201(AsyncWriteEngine.java:72)
at org.mapdb.AsyncWriteEngine.runWriter(AsyncWriteEngine.java:230)
at org.mapdb.AsyncWriteEngine$WriterRunnable.run(AsyncWriteEngine.java:156)
at java.lang.Thread.run(Unknown Source)  

我的MapDB版本是0.9.7。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-08 10:36:17

0.9.7有错误,请更新到更新版本。

如果创建新集合,则需要提交,否则更改将不会保留。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48607972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档