E/SQLiteLog: (283) 从 WAL 文件中恢复的帧

Dmi*_*kov 3 android android-sqlite android-architecture-components android-workmanager

每次启动应用程序时都会出现错误。

E/SQLiteLog: (283) recovered 22 frames from WAL file /data/data/com.dmitrysimakov.kilogram/databases/androidx.work.workdb-wal
Run Code Online (Sandbox Code Playgroud)

该应用程序工作正常,但我想知道为什么会出现此错误。database/androidx.work.workdb-wal 它是 Worker 的日志。我使用 Worker 来预填充我的数据库。

Room.databaseBuilder(app, KilogramDb::class.java, "kilogram.db")
            .addCallback(object : RoomDatabase.Callback() {
                override fun onCreate(db: SupportSQLiteDatabase) {
                    super.onCreate(db)
                    val request = OneTimeWorkRequestBuilder<SeedDatabaseWorker>().build()
                    WorkManager.getInstance().enqueue(request)
                }
            })
            .fallbackToDestructiveMigration()
            .build()
Run Code Online (Sandbox Code Playgroud)

Mik*_*keT 5

此消息表明数据库在退出之前尚未关闭,因此未正确清理 WAL 文件。

因此,当应用程序启动时,它意识到它需要清理 WAL 文件,然后这样做,但会发出错误,因为它可能表明存在严重问题。

要解决此问题,您需要在完成后关闭数据库。

您可能会对此感兴趣(如果您还不知道,Richard Hipp是 SQLite 的主要负责人) 日志的持续恢复