我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;
}
Run Code Online (Sandbox Code Playgroud)
当我部署此代码并在用户运行新版本的 Android 应用程序时执行(自动)数据库迁移时,我在运行时收到以下错误:"Cannot add a NOT NULL column with default value NULL".
在这种情况下,注释实体以便框架正确处理自动数据库迁移的正确方法是什么?
Tăn*_*Tài 13
我找到了解决方案。
database.execSQL("ALTER TABLE table_name ADD COLUMN colum_name INTEGER DEFAULT 1 not null");
Run Code Online (Sandbox Code Playgroud)
在数据类型后添加命令:“DEFAUT value”将解决您的问题。
有两个选项,第一个可能是首选 - 在第二个选项中,您需要处理代码中可能的空指针:
选项1
@Entity
abstract class AbstractFooEntity {
...
@Column(value = "0")
int newField;
}
Run Code Online (Sandbox Code Playgroud)
选项2
@Entity
abstract class AbstractFooEntity {
...
Integer newField;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3136 次 |
| 最近记录: |