例外:预打包的数据库具有无效的架构
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 在网络图像上不起作用(例外:图像数据无效)