【发布时间】:2018-07-01 10:45:33
【问题描述】:
我正在为我的数据库表的 2 个列添加 UNIQUE 约束,以便表的每一行都可以是唯一的。因此,除了添加 UNIQUE 约束之外,我还在执行数据库迁移,如下所示:
static final Migration MIGRATION_1_2 = new Migration(1, 2) {
@Override
public void migrate(SupportSQLiteDatabase database) {
database.execSQL(“CREATE UNIQUE INDEX index_<MyTableName>_<ColumnName> ON <MyTableName> (<ColumnName>)”);
}
};
但是得到下面的崩溃:
致命异常:android.database.sqlite.SQLiteConstraintException:唯一约束失败:。 (代码 2067) 在 android.database.sqlite.SQLiteConnection.nativeExecuteForChangedRowCount(SQLiteConnection.java) 在 android.database.sqlite.SQLiteConnection.executeForChangedRowCount(SQLiteConnection.java:734) 在 android.database.sqlite.SQLiteSession.executeForChangedRowCount(SQLiteSession.java:754) 在 android.database.sqlite.SQLiteStatement.executeUpdateDelete(SQLiteStatement.java:64) 在 android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1677)
注意:其中一个原因(但不确定)可能是:因为我正在使用“room:runtime:1.1.0”,它有一些与之相关的问题 (Ref:https://issuetracker.google.com/issues/79362399),所以我应该迁移到“房间:运行时:1.1.1-rc1”?
任何关于上述问题的指针将不胜感激。
谢谢你。
【问题讨论】:
标签: android sqlite android-room