【发布时间】:2019-07-15 07:59:01
【问题描述】:
我正在基于一个旧的 Android 项目构建一个 Android 应用程序。 在我的新应用程序中,我使用的是 Room。我必须使用第一个项目中使用的相同数据库。 此外,我使用 com.amitshekhar.android:debug-db 库从第一个项目中提取了数据库。 获得数据库文件后,我想用 Room 打开它。
我正在构建这样的数据库:
Room.databaseBuilder(
androidContext(),
Database::class.java, "database.db"
).createFromAsset("database.db")
.build()
目前我正在使用这个 createFromAsset() 方法,虽然稍后我会使用 createFromFile() 方法,因为我的数据库应该从服务器下载。
但我得到 java.lang.IllegalStateException: Pre-packaged database has an invalid schema 发生这种情况是因为数据库中有几种数据类型在 Room 中不受支持,例如 NVARCHAR(200)、DATE 或 bit。
我知道 Room 只使用了五种 Sql 类型,但我不知道如何更改,以便 Room 可以使用上述方法打开这种数据库。
问题是如何将NVARCHAR(200)、DATE或bit转换成Room支持的数据类型?
【问题讨论】:
-
谢谢,但我在上述问题的答案中看不到解决方案。显然,实现空迁移没有任何作用,因为方案不匹配。
-
有时查看其他回复也很好,除了批准的答案。对于您的情况,this response 确实为解决方案提供了指导,因为迁移并不是那么简单
-
您使用的是哪个版本的 Room?
-
@barq 2.2.0-alpha01
标签: android database sqlite android-room android-room-prepackageddatabase