当前位置: 首页 > 知识库问答 >
问题:

更改架构时无法预填充room数据库

姚俊贤
2023-03-14

当我试图更改数据库中表的模式/数据时,我遇到了一个无法解决的问题。我正在用Rooms.CreateFromAsset方法预填充数据库。

当我使用以下代码构建数据库时:

 val instance = Room.databaseBuilder(
                context.applicationContext,
                MetarDatabase::class.java,
                "metar_database"
            )
                    .createFromAsset("database/metar_database.db")
                    .fallbackToDestructiveMigration()
                    .build()

和这个数据类:

    @Entity(tableName = "airport_table")
data class Airport(
    @PrimaryKey(autoGenerate = false)
    val icao : String,
    val name : String?,
    val municipality : String?,
    val scheduled : Boolean,
    val iata : String?
)

 @Entity(tableName = "airport_table")
data class Airport(
    @PrimaryKey(autoGenerate = false)
    val icao : String,
    val name : String?
)

共有1个答案

狄鸿禧
2023-03-14

如果要从Room DB导出文件或使用数据库浏览器访问信息,请先使用.setJournalMode(journalmode.truncate)。以确保所有数据得到充分保存。我猜这是造成这个错误的可能原因之一。希望能帮到你

val instance = Room.databaseBuilder(
            context.applicationContext,
            MetarDatabase::class.java,
            "metar_database"
        )
           .createFromAsset("database/metar_database.db")
           .fallbackToDestructiveMigration()
           .setJournalMode(JournalMode.TRUNCATE) // Add this line
           .build()
 类似资料:
  • 我习惯于使用Arraylist,下面您可以看到我为存储数据所做的尝试: 这就是我尝试过的,但遗憾的是,这并不奏效: 下面你可以找到我剩下的代码,但上面的一个应该足以让我清楚的想要做什么... } 我创建了Dao类,如下所示::- @DAO公共接口DeckBuilderDao{

  • 我的任务是将应用程序的当前体系结构(使用Cupboard)迁移到Room。在第一项工作中,我遇到了一些问题,即迁移数据库对象,目前用Java编写(Cupboard仅支持Java),使它们与Room一起工作。这是一个例子: 这是它在数据库中的样子: 我对此实体所做的是在Kotlin中创建一个用于Room的类,它如下所示: 通过比较这两个字段,我可以看到一些字段应该被标记为,但它们似乎被标记为,尽管K

  • 我想使用预先填充的数据库的房间,但我不明白如何告诉房间在哪里找到我的数据库。 现在我将它放在中,当我为房间数据库创建实例时,我是这样创建的: 这样一来,我认为它每次都在创建一个新的数据库,或者说,它没有使用预填充的数据库。 我怎样才能找到我的数据库?

  • 和一个类ContentProvider,因为它也是在日志中的错误中指定的 公共类PoemsProvider扩展ContentProvider{private static final UriMatcher URI_MATCHER=new UriMatcher(UriMatcher.no_match);private static final int peams=1;private static f

  • 我试过使用和不使用。表和已成功创建,并包含迁移(insert-books)。 迁移是通过的,因为如果我添加了一个无效的insert(到一些不存在的表中),我会得到异常: 如何使用LiquiBase用insert-books.sql脚本中的数据填充数据库?

  • 我有两个收藏,一个是用户,另一个是猫。我想要猫的数据下我的用户集合。但我没有得到。 user.js