当前位置:首页 > 数据库 > SQlite

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

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

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

该应用程序运行正常,但我想知道为什么会发生此错误. database / androidx.work.workdb-wal是工作者的日志.我使用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


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!