Sqlite 断电数据丢失
在Android 9的机器上,遇到一个问题,sqlite 数据写入完成以后,立马断电。重启以后刚刚写入的数据丢失。
初步排查,数据库同步问题,数据写入以后没有立马同步到磁盘。与数据库打开模式相关。
打开模式在SQLiteConnection这个类:
上代码.
Android 9:
private void setWalModeFromConfiguration() {
if (!mConfiguration.isInMemoryDb() && !mIsReadOnlyConnection) {
final boolean walEnabled =
(mConfiguration.openFlags & SQLiteDatabase.ENABLE_WRITE_AHEAD_LOGGING) != 0;
// Use compatibility WAL unless an app explicitly set journal/synchronous mode
// or DISABLE_COMPATIBILITY_WAL flag is set
final boolean useCompatibilityWal = mConfiguration.useCompatibilityWal();
if (walEnabled || useCompatibilityWal) {
setJournalMode("WAL");
if (mConfiguration.syncMode != null) {
setSyncMode(mConfiguration.syncMode);
} else if (useCompatibilityWal && SQLiteCompa

探讨了Android系统中SQLite数据库在断电情况下数据丢失的问题。通过对比Android 9与Android 12的数据库配置差异,发现sync_mode设置对数据持久化的影响,并提供了解决方案。
最低0.47元/天 解锁文章
3704

被折叠的 条评论
为什么被折叠?



