通过从3到4的迁移,我正在将我的数据库从第3版升级到第4版。
下面是我的迁移代码:
private static Migration MIGRATION_3_4 = new Migration(3, 4) {
@Override
public void migrate(@NonNull SupportSQLiteDatabase database) {
database.execSQL("ALTER TABLE caption_table ADD COLUMN localVideoUrl TEXT;");
database.execSQL("ALTER TABLE caption_table ADD COLUMN postType TEXT");
database.execSQL("ALTER TABLE caption_table ADD COLUMN videoUrl TEXT");
}
};下面是创建房间数据库的代码
this.mAppDataBase = Room.databaseBuilder(getApplicationContext(), AppDataBase.class, "my_db")
.addMigrations(MIGRATION_2_3, MIGRATION_3_4)
.build();下面是我在我的PostModel上添加的代码
@Expose
private String postType;
@Expose
private String videoUrl;
@Expose
private String localVideoUrl;
public String getPostType() {
return postType;
}
public void setPostType(String postType) {
this.postType = postType;
}
public String getVideoUrl() {
return videoUrl;
}
public void setVideoUrl(String videoUrl) {
this.videoUrl = videoUrl;
}
public String getLocalVideoUrl() {
return localVideoUrl;
}
public void setLocalVideoUrl(String localVideoUrl) {
this.localVideoUrl = localVideoUrl;
}下面是我正在犯的错误。错误与房间实体的notNull属性无关。
java.lang.IllegalStateException:迁移没有正确处理posts(com.myapp.Database.PostModel)。 预期: authorImageLocalUrl=Column{name='authorImageLocalUrl',{TableInfo{name=‘post’,columns={imageWidth=Column{name='imageWidth',type=‘整型’,亲和=‘3’,notNull=true,primaryKeyPosition=0},localVideoUrl=Column{name='localVideoUrl',type='TEXT',亲和=‘2’,notNull=false,primaryKeyPosition=0},columns=类型=‘TEXT’,亲和=‘2’,notNull=false,primaryKeyPosition=0},videoUrl=Column{名称=‘TEXT’,类型=‘TEXT’,亲缘关系‘2’,notNull=false,primaryKeyPosition=0},imageLocalUrl=Column{name='imageLocalUrl',类型=‘TEXT’,亲和力=‘2’,发展,primaryKeyPosition=0}、postType=Column{name='postType‘、type='TEXT’、亲和力=‘2’、notNull=false、primaryKeyPosition=0}、authorName=Column{name='authorName‘、type='TEXT’、关联=‘2’、notNull=false、primaryKeyPosition=0}、imageUrl=Column{name='imageUrl‘、type='TEXT’、亲缘关系=‘2’、notNull=false、primaryKeyPosition=0}、id=Column{名称=‘id’、类型=‘整数’、亲和力=‘3’、notNull=true、primaryKeyPosition=1}、title=Column{名称=‘title’、类型=‘TEXT’、亲和力=‘2’、notNull=false、primaryKeyPosition=0}、authorImageUrl=Column{name=‘imageUrl’、类型=‘TEXT’,亲和=‘2’,notNull=false,primaryKeyPosition=0},imageHeight=Column{name=‘ImageHL.8’,type=‘整型’,亲和=‘3’,notNull=true,primaryKeyPosition=0},foreignKeys=[],indices=[]} 找到:TableInfo{name=‘post’,columns={imageWidth=Column{name='imageWidth',type=‘整型’,亲和=‘3’,notNull=true,primaryKeyPosition=0},columns=类型=‘TEXT’,亲和=‘2’,notNull=false,primaryKeyPosition=0},imageLocalUrl=Column{name='imageLocalUrl',类型=‘TEXT’,亲和=‘2’,notNull=false,primaryKeyPosition=0},authorName=Column{name='authorName',类型=‘TEXT’,亲和‘2’,notNull=false,primaryKeyPosition=0},imageUrl=Column{name='imageUrl',类型=‘TEXT’,亲和力=‘2’,notNull=false,primaryKeyPosition=0},id=Column{name='id',type=‘整型’,亲和=‘3’,notNull=true,primaryKeyPosition=1},title=Column{name='title',type='TEXT',亲和=‘2’,notNull=false,primaryKeyPosition=0},authorImageUrl=Column{name='authorImageUrl',type='TEXT',亲和力=‘2’,notNull=false,primaryKeyPosition=0},imageHeight=Column{name=‘INTEGER 8’,type=‘整型’,亲和=‘3’,notNull=true,primaryKeyPosition=0},foreignKeys=[],indices=[]}
发布于 2019-09-06 08:35:20
比较日志中预期的JSON与已找到的JSON,显然会出现错误,因为找到的表没有您打算添加的3个新列:postType、videoUrl和localVideoUrl。(可以使用此脚本比较日志中的两个JSON对象)
问题可能是在您的迁移代码中,您将新列添加到一个名为caption_table的表中,而根据日志,失败的表称为posts。尝试调整迁移代码以将新列添加到适当的表中。
https://stackoverflow.com/questions/50972190
复制相似问题