首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >房间数据库迁移失败: ALTER添加多列

房间数据库迁移失败: ALTER添加多列
EN

Stack Overflow用户
提问于 2018-06-21 15:23:31
回答 1查看 4K关注 0票数 12

通过从3到4的迁移,我正在将我的数据库从第3版升级到第4版。

下面是我的迁移代码:

代码语言:javascript
复制
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");
    }
};

下面是创建房间数据库的代码

代码语言:javascript
复制
this.mAppDataBase = Room.databaseBuilder(getApplicationContext(), AppDataBase.class, "my_db")
                        .addMigrations(MIGRATION_2_3, MIGRATION_3_4)
                        .build();

下面是我在我的PostModel上添加的代码

代码语言:javascript
复制
@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=[]}

EN

回答 1

Stack Overflow用户

发布于 2019-09-06 08:35:20

比较日志中预期的JSON与已找到的JSON,显然会出现错误,因为找到的表没有您打算添加的3个新列:postTypevideoUrllocalVideoUrl(可以使用此脚本比较日志中的两个JSON对象)

问题可能是在您的迁移代码中,您将新列添加到一个名为caption_table的表中,而根据日志,失败的表称为posts。尝试调整迁移代码以将新列添加到适当的表中。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50972190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档