房间数据库迁移失败,预打包数据库的架构无效

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");

注意:在文本中添加错误日志比添加图像更有帮助,尽管在您的情况下这有助于为插图着色:)