通过提供从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();
@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;
}
找到:TableInfo{name='posts',Columns={imageWidth=Column{name='image widt',Type='integer',affinity='3',notnull=true,PrimaryKeyPosition=0},authorImageLocalURL=Column{name='author ImageLocalURL',Type='text',affinity='2',notnull=false,PrimaryKeyPosition=0},imageLocalURL=Column{name='image LocalURL',Type='text',affinity='2',notnull=false,PrimaryKeyPosition=0},,affinity='2',notnull=false,primarykeyposition=0},imageurl=column{name='image url',type='text',affinity='2',notnull=false,primarykeyposition=0},id=column{name='id',type='integer',affinity='3',notnull=true,primarykeyposition=1},title=column{name='title',type='text',affinity='2',notnull=false,primarykeyposition=0},authorimageurl=column{name='author 2',NotNull=False,PrimaryKeyPosition=0},ImageHeight=Column{Name='Image Height',Type='Integer',Affinity='3',NotNull=True,PrimaryKeyPosition=0}},ForeignKeys=[],Indices=[]}
将日志中的预期JSON与找到的JSON进行比较,很明显,发生错误是因为找到的表没有您想要添加的3个新列:PostType
、VideOURL
和LocalVideOURL
。(您可以使用此脚本从日志中比较两个JSON对象)
问题可能是在迁移代码中将新列添加到名为caption_table
的表中,而根据日志,失败的表称为posts
。尝试调整迁移代码以将新列添加到适当的表中。
然而,我发现手动操作很不方便。有没有办法告诉Room:我不会接触任何现有的表,所以数据是安全的。请为我创建迁移?
我需要在我的laravel项目中添加一个新列,这没有问题,我使用了进行了更新,一切正常。现在我需要找出这个表上有多少条记录,并用一些值进行更新。 我有表: 因此,我使用新的迁移文件创建了新字段: 现在我需要用一些值更新表中的这个字段,例如,如果表中有100条记录,那么我需要在每一行中插入值“carry-X”,其中X是一个从1到100的数字。例如: 逮捕令-1,逮捕令-2,......逮捕证-100
预期: 找到TableInfo{name='user',Columns={name=Column{name='name',Type='text',NotNull=False,PrimaryKeyPosition=0},Age=Column{name='Age',Type='integer',NotNull=True,PrimaryKeyPosition=0},ID=Column{name='id'
我有致命的异常:java.lang.RuntimeException:计算数据库实时数据时出现异常。在崩溃报告中 为什么TableInfo中的所有内容都是空的 谁能帮我一下,我真的不知道我做错了什么或者是不是一个bug。
本文向大家介绍Django 将更改应用到数据库(迁移),包括了Django 将更改应用到数据库(迁移)的使用技巧和注意事项,需要的朋友参考一下 示例 创建新模型或修改现有模型后,您将需要为更改生成迁移,然后将迁移应用于指定的数据库。这可以通过使用Django的内置迁移系统来完成。manage.py在项目根目录中使用实用程序: 上面的命令将在migrations应用程序的子目录下创建必需的迁移脚本。
我在Laravel4.2项目中工作,现在我想在现有的表用户中添加列。现在我想添加另一列,当我运行migration命令时,我总是收到相同的消息“无需迁移”下面是我的迁移模式代码 我在终点站跑步 我还运行以下命令 但是当我运行上面的命令时,我收到以下错误 SQLSTATE[42S01]:基表或视图已经存在: 1050表'用户'已经存在