Java.lang.IllegalStateException
迁移没有正确处理用户(therealandroid.github.com.roomcore.java.User).
预期:
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',type ='INTEGER',notNull = true,primaryKeyPosition = 1}},foreignKeys = []}找到:
发现
TableInfo {name ='user',columns = {name = Column {name ='name',type ='TEXT',notNull = false,primaryKeyPosition = 0},id = Column {name ='id',type ='INTEGER ',notNull = true,primaryKeyPosition = 1},age = Column {name ='age',type ='INTEGER',notNull = false,primaryKeyPosition = 0}},foreignKeys = []}
我正在尝试执行一个简单的迁移,我有一个被调用的类User,它有两列ID (primary key) …
我正在尝试将布尔列添加到现有表中
alter table chatuser add activerecord bool;
alter table chatuser add activerecord boolean;
Run Code Online (Sandbox Code Playgroud)
其中activerecord是我的布尔列
这些查询都不起作用.如何在现有表中添加布尔列?
我正在尝试将我现有的数据库用于Android Room.但是,我的一个表有一个VARCHAR列.
似乎Room仅支持TEXT而不支持VARCHAR.并且sqlite不允许修改列类型.
那么,有没有办法在房间里使用带有VARCHAR字段的existng表?或者我应该将整个表复制到一个新的表替换VARCHAR到TEXT?
我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".
在这种情况下,注释实体以便框架正确处理自动数据库迁移的正确方法是什么?