每次我在我的应用程序中在真实设备或avd上打开数据库时,我都会看到以下LogCat条目:
E/SQLiteLog﹕ (5) statement aborts at 2: [PRAGMA journal_mode=PERSIST]
这些是Lollipop设备,我知道PERSIST自API 16以来一直被使用,但看起来好像不太对劲。
打开后数据库完美运行(据我所知)。
当我尝试在db.enableWriteAheadLogging()
中使用预写日志记录onConfigure(SQLiteDatabase db)
时出现此错误:
@Override
public void onConfigure(SQLiteDatabase db) {
db.enableWriteAheadLogging();
super.onConfigure(db);
}
因为预写日志记录不能与只读数据库一起使用,所以必须使用setWriteAheadLoggingEnabled(true)
:
@Override
public void onConfigure(SQLiteDatabase db) {
setWriteAheadLoggingEnabled(true);
super.onConfigure(db);
}
或者仅在db.enableWriteAheadLogging()
中使用getWritableDatabase()
:
@Override
public SQLiteDatabase getWritableDatabase() {
SQLiteDatabase db = super.getWritableDatabase();
db.enableWriteAheadLogging();
return db;
}
我有同样的问题,当我停止数据库处理多个事务时,我解决了它。删除database.enableWriteAheadLogging()
或使用database.disableWriteAheadLogging()