房间数据库迁移失败,预打包数据库的架构无效
Room Database Migration fails with Pre-packaged database has an invalid schema
我有一个简单的 SQLite 数据库:
相应的用户实体 class 如下所示:
@Entity
public class User {
@PrimaryKey
public int uid;
@ColumnInfo(name = "first_name")
public String firstName;
@ColumnInfo(name = "last_name")
public String lastName;
public User(int uid, String firstName, String lastName){
this.uid = uid;
this.firstName = firstName;
this.lastName = lastName;
}
}
但是,我收到此错误:
我错过了什么?列序错了吗?
我认为这是由于 notNull
注释未在我的实体 class 中设置,但即使有注释,错误仍然存在。
您将 NN
(Non-Null) 值分配给 SQLite 中的“uid”列并出现在 Expected 部分的问题错误日志,虽然在迁移代码中(你没有显示),你没有明确地将“NOT NULL
”语句添加到迁移中,并且可以在 Found 中看到 错误日志部分。
这在顶部图像中以绿色突出显示。
所以,预计会看到类似下面的内容,根据您的代码检查并修改:
database.execSQL("ALTER TABLE 'User' ADD COLUMN 'uid' INTEGER NOT NULL");
注意:在文本中添加错误日志比添加图像更有帮助,尽管在您的情况下这有助于为插图着色:)
我有一个简单的 SQLite 数据库:
相应的用户实体 class 如下所示:
@Entity
public class User {
@PrimaryKey
public int uid;
@ColumnInfo(name = "first_name")
public String firstName;
@ColumnInfo(name = "last_name")
public String lastName;
public User(int uid, String firstName, String lastName){
this.uid = uid;
this.firstName = firstName;
this.lastName = lastName;
}
}
但是,我收到此错误:
我错过了什么?列序错了吗?
我认为这是由于 notNull
注释未在我的实体 class 中设置,但即使有注释,错误仍然存在。
您将 NN
(Non-Null) 值分配给 SQLite 中的“uid”列并出现在 Expected 部分的问题错误日志,虽然在迁移代码中(你没有显示),你没有明确地将“NOT NULL
”语句添加到迁移中,并且可以在 Found 中看到 错误日志部分。
这在顶部图像中以绿色突出显示。
所以,预计会看到类似下面的内容,根据您的代码检查并修改:
database.execSQL("ALTER TABLE 'User' ADD COLUMN 'uid' INTEGER NOT NULL");
注意:在文本中添加错误日志比添加图像更有帮助,尽管在您的情况下这有助于为插图着色:)