例外:预打包的数据库具有无效的架构

Posted

技术标签:

【中文标题】例外:预打包的数据库具有无效的架构【英文标题】:Exception: Pre-packaged database has an invalid schema 【发布时间】:2020-01-16 12:46:34 【问题描述】:

如果这个问题激怒了您,我很抱歉。我一直试图解决这么久。我仍然找不到“预期”和“找到”之间的区别。

Caused by: java.lang.IllegalStateException: Pre-packaged database has an invalid schema: question(com.bangladroid.drivingtest.database.model.Question).
 Expected:
TableInfoname='question', columns=image=Columnname='image', type='INTEGER', affinity='3', notNull=false, primaryKeyPosition=0, defaultValue='null', question=Columnname='question', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null', answer=Columnname='answer', type='INTEGER', affinity='3', notNull=false, primaryKeyPosition=0, defaultValue='null', answer3=Columnname='answer3', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null', answer2=Columnname='answer2', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null', _id=Columnname='_id', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=1, defaultValue='null', favorite=Columnname='favorite', type='INTEGER', affinity='3', notNull=false, primaryKeyPosition=0, defaultValue='null', answer1=Columnname='answer1', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null', foreignKeys=[], indices=[]
 Found:
TableInfoname='question', columns=image=Columnname='image', type='integer', affinity='3', notNull=false, primaryKeyPosition=0, defaultValue='null', question=Columnname='question', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null', answer=Columnname='answer', type='integer', affinity='3', notNull=false, primaryKeyPosition=0, defaultValue='null', answer3=Columnname='answer3', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null', answer2=Columnname='answer2', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null', _id=Columnname='_id', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null', favorite=Columnname='favorite', type='integer', affinity='3', notNull=false, primaryKeyPosition=0, defaultValue='null', answer1=Columnname='answer1', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null', foreignKeys=[], indices=[]

“整数”和“整数”有什么区别吗? primaryKeyPosition 是什么意思?

【问题讨论】:

你找到解决办法了吗? 【参考方案1】:

“整数”和“整数”有什么区别吗?

列类型不区分大小写。

我仍然找不到“预期”和“找到”之间的区别。

区别在于_id列的定义不同。

primaryKeyPosition=1(预期)v primaryKeyPosition=0(找到)

所以你需要让预打包的数据库定义_id列来包含PRIMARY KEY。 (Room 要求 Entity(table) 定义了主键,因此无法更改 Entity 以适应)。

【讨论】:

以上是关于例外:预打包的数据库具有无效的架构的主要内容,如果未能解决你的问题,请参考以下文章

房间数据库 预打包的数据库的架构无效

heroku 运行 rake 资产:预编译中止,因为文件具有无效的 UTF-8 字节序列

try/catch 在网络图像上不起作用(例外:图像数据无效)

Android Room 将预打包的数据库存储在缓存中是不是正常?

Realm Java 预打包数据库

Chrome无效的SSL证书安全警告