问题描述
我正在尝试建立一个非常简单的数据库来存储Hangman游戏的得分。
我建立了一个实体:
@Entity(tableName =“ scores”)数据类DBscore( @首要的关键 var pseudo:String =“”, var score:Int = 0){
}
//从DB模型到kotlin模型的转换方法很有趣 List.asDomainModel():列表{ 返回地图{ 得分( 伪= it.pseudo, 分数= it.score ) }
}
INSTANCE = databaseBuilder( context.applicationContext,AppDataBase::class.java,"app_database" ) .createFromAsset("database/scores.db").build()
我已经创建了以下数据库文件:https://wetransfer.com/downloads/c534dd62136c94f17c0ee71f1ef39a1920201011144837/6ff2b7
原因:java.lang.IllegalStateException:预打包的数据库具有无效的架构:scores(com.example.hangmangame.database.entity.DBscore)。 预期: TableInfo {name ='scores',columns = {pseudo = Column {name ='pseudo',type ='TEXT',affinity ='2',notNull = true,primaryKeyPosition = 1,defaultValue ='null'},分数=列{name ='score',type ='INTEGER',affinity ='3',notNull = true,primaryKeyPosition = 0,defaultValue ='null'}},foreignKeys = [],indexs = []} 发现: TableInfo {名称='分数',列= {分数=列{名称='分数',类型='INTEGER',亲和力='3',notNull = false,primaryKeyPosition = 0,defaultValue ='null'},伪=列{name ='pseudo',type ='TEXT',affinity ='2',notNull = true,primaryKeyPosition = 1,defaultValue ='null'}},foreignKeys = [],indexs = []}
似乎是列顺序的问题,但对我而言,sql对它并不敏感。
寻求帮助。
致谢
昆汀。
解决方法
Room期望score
为NOT NULL
。显然,基于该错误,您预先填充的数据库架构将其命名为NULL
。