persistence Berkeley DB(Java版)在应用程序运行之间不是持久的
我正在使用伯克利数据库为我正在构建的网络爬虫存储信息。但是,我的数据库信息在会话之间没有保存
启动应用程序时,每个数据库上的count()返回0。在会话结束时,在退出之前,我为每个DB打印count(),它已适当更改,但当我再次运行程序时,它是“重置”的。。。为什么会这样
此外,我选择不使用事务,因为我是单用户,并且不会在多线程环境中运行该程序
你可以在下面搜索框中键入要查询的问题!
我正在使用伯克利数据库为我正在构建的网络爬虫存储信息。但是,我的数据库信息在会话之间没有保存
启动应用程序时,每个数据库上的count()返回0。在会话结束时,在退出之前,我为每个DB打印count(),它已适当更改,但当我再次运行程序时,它是“重置”的。。。为什么会这样
此外,我选择不使用事务,因为我是单用户,并且不会在多线程环境中运行该程序
# 1 楼答案
也许这会有帮助:
我认为你必须将“延迟写入”设置为“真”。然后可以在数据库上使用“sync()”并将数据持久化。运行它,然后用“put(…)”删除该行-命令应该还能用。好吧,至少它对我有用……:)
致意
亚历山大·谢尔
# 2 楼答案
我在伯克利DB工作了两周。我也被同一个问题弄糊涂了,我的结论是:如果你在应用程序停止运行之前关闭了环境和数据库,那么数据会存储到一个文件中,你可以在打开数据库时指定它的位置。当程序成功终止时,可以实现关闭操作。但是,如果出现故障或程序崩溃,并且在正常情况下无法结束应用程序,我还无法找到运行关闭操作的位置