【问题标题】:Room Database Migration fails with Pre-packaged database has an invalid schema房间数据库迁移失败,预打包数据库的架构无效
【发布时间】:2021-05-10 23:45:29
【问题描述】:

我有一个简单的 SQLite 数据库:

对应的用户实体类如下:

@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 注释未在我的实体类中设置,但即使使用注释,错误仍然存​​在。

【问题讨论】:

    标签: android sqlite android-room migrate


    【解决方案1】:

    您将NN (Non-Null) 值分配给 SQLite 中的“uid”列的问题,并且出现在错误日志的 Expected 部分中,尽管在迁移代码中(您没有显示),您没有在迁移中明确添加“NOT NULL”语句,并且可以在错误日志的 Found 部分中看到。

    这在顶部图像中以绿色突出显示。

    所以,预计会看到如下内容,根据您的代码检查和修改:

    database.execSQL("ALTER TABLE 'User' ADD COLUMN 'uid' INTEGER NOT NULL");
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-13
      • 2020-09-15
      • 2019-10-22
      • 2021-08-13
      • 2018-12-01
      • 1970-01-01
      • 2021-09-02
      相关资源
      最近更新 更多