我如何强制sqlite将日志文件合并到主数据库中?

我如何强制sqlite将日志文件合并到主数据库中?,第1张

概述我有一个可通过事务写入数据库的应用程序.我知道sqlite会写入日志文件,然后在日志文件达到一定大小后将其合并.我还具有尝试将数据库文件复制到另一个位置的功能.我的问题是我找不到强迫sqlite将日志合并到主数据库中的方法.我所有的查询看起来像这样SQLiteDatabasedatabase=n

我有一个可通过事务写入数据库的应用程序.我知道sqlite会写入日志文件,然后在日志文件达到一定大小后将其合并.我还具有尝试将数据库文件复制到另一个位置的功能.我的问题是我找不到强迫sqlite将日志合并到主数据库中的方法.

我所有的查询看起来像这样

sqliteDatabase database =null;try{    database = getReadableDatabase();    //PERFORM SOME INSERT   }   catch (Exception e){            Log.e(TAG, "Error with insert");   }   finally {        if( database != null){            database.close();        }  }

这些方法执行后,我将关闭应用程序并检查应用程序保存其数据库的目录.我可以看到数据库文件和数据库新闻.

我正在尝试做类似的事情

public voID copyDatabase(){    //FORCE MERGE    //DO OTHER OPERATIONS}

在需要时,有人对如何合并日记文件有任何想法吗?

解决方法:

该日志仅包含有关未提交交易的信息.如果您确定没有从任何地方打开数据库,则说明日记文件没有被使用,可以简单地复制核心数据库文件.

细节

sqlite有multiple journal modes,其中包括DELETE,它在最后一个事务终止时删除日记.

但是,androID下的default journal mode是PERSIST,这意味着即使当前不使用日志文件,数据库引擎也不会自动删除该日志文件.

可以在AndroID中更改日志模式:Android SQLite – changing journal_mode

db.rawquery("PRAGMA journal_mode=OFF", null).close();

请注意0​​7003,但是:

When using enableWriteAheadLogging(), journal_mode is automatically managed by this class. So, do not set journal_mode using “PRAGMA journal_mode'” statement if your app is using enableWriteAheadLogging()

总结

以上是内存溢出为你收集整理的我如何强制sqlite将日志文件合并到主数据库中?全部内容,希望文章能够帮你解决我如何强制sqlite将日志文件合并到主数据库中?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1079824.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存