android - E/SQLiteLog : (283) recovered frames from WAL file

标签 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

应用程序运行正常,但我想知道为什么会出现此错误。 databases/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()

最佳答案

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

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

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

您可能会对此感兴趣(Richard Hipp 是 SQLite 的主要负责人,如果您还不知道的话) Continuous recovery of journal

关于android - E/SQLiteLog : (283) recovered frames from WAL file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53124390/

相关文章:

php - 无法将数据从android发送到PHP

android - 在 Sublime Text 2 上开发 Android

Android Navigation Drawer 没有通过拖动关闭它

mysql - 在数据库中插入文本如何处理'

java - Android 房间持久化库 : What is the best way to implement a many to many relation?

android - 直接从 ViewModel 调用 webservice

java - 将 XML 放入嵌套布局后,数学逻辑停止工作

Android Sqlite 数据库组建

android - (Android Repository Pattern) 使用从 web 删除的项目更新电话数据库数据

android - 在 Fragment 中观察 LiveData