我通过添加如下所示的整数字段来更新我的AbstractFooEntity
类,并且我碰到了数据库版本(数据库初始化为new DatabaseSource(context, Models.DEFAULT, DB_VERSION)
。
@Entity
abstract class AbstractFooEntity {
// this was in DB schema v1
String someField;
// added in DB schema v2
int newField = 0;
}
当我部署此代码并执行(自动)数据库迁移时,我在运行时收到以下错误:"Cannot add a NOT NULL column with default value NULL"
。
注释实体的正确方法是什么,以便框架在此方案中正确处理自动数据库迁移?
答案 0 :(得分:1)
有两个选项,第一个可能是首选 - 在第二个选项中,您需要在代码中处理可能的nullpoin:
选项1
@Entity
abstract class AbstractFooEntity {
...
@Column(value = "0")
int newField;
}
选项2
@Entity
abstract class AbstractFooEntity {
...
Integer newField;
}
答案 1 :(得分:1)
我找到了解决方案。
database.execSQL("ALTER TABLE table_name ADD COLUMN colum_name INTEGER DEFAULT 1 not null");
在数据类型后添加命令:“默认值”即可解决您的问题。