【发布时间】:2021-04-11 04:07:19
【问题描述】:
错误: java.lang.IllegalStateException:迁移未正确处理:insta_alerts(org.altruist.BajajExperia.Models.CEInstaViewDetailsDTO)。
预期:
TableInfo{name='insta_alerts', columns={isSeen=Column{name='isSeen', type='INTEGER',affinity='3',notNull=false,primaryKeyPosition=0, defaultValue='null'}, smsText=Column{name='smsText', type='TEXT', 亲和力='2',notNull=false,primaryKeyPosition=0, defaultValue='null'}, sentDate=Column{name='sentDate', type='TEXT', 亲和力='2',notNull=false,primaryKeyPosition=0, defaultValue='null'},campaign=Column{name='campaign',type='TEXT', 亲和力='2',notNull=false,primaryKeyPosition=0, defaultValue='null'}, customerId=Column{name='customerId', type='TEXT',affinity='2',notNull=false,primaryKeyPosition=0, defaultValue='null'}, id=Column{name='id', type='INTEGER', 亲和力='3',notNull=false,primaryKeyPosition=1, defaultValue='null'}, header=Column{name='header', type='TEXT', 亲和力='2',notNull=false,primaryKeyPosition=0, defaultValue='null'},priority=Column{name='priority',type='TEXT', 亲和力='2',notNull=false,primaryKeyPosition=0, defaultValue='null'}, notificationText=Column{name='notificationText', type='TEXT',affinity='2',notNull=false,primaryKeyPosition=0, defaultValue='null'}, alertMessage=Column{name='alertMessage', type='TEXT',affinity='2',notNull=false,primaryKeyPosition=0, defaultValue='null'}},foreignKeys=[], 指数=[索引{名称='index_insta_alerts_smsText_customerId', unique=true, columns=[smsText, customerId]}]}
找到:
TableInfo{name='insta_alerts', columns={isSeen=Column{name='isSeen', type='INTEGER',affinity='3',notNull=false,primaryKeyPosition=0, defaultValue='null'}, smsText=Column{name='smsText', type='TEXT', 亲和力='2',notNull=false,primaryKeyPosition=0, defaultValue='null'}, sentDate=Column{name='sentDate', type='TEXT', 亲和力='2',notNull=false,primaryKeyPosition=0, defaultValue='null'},campaign=Column{name='campaign',type='TEXT', 亲和力='2',notNull=false,primaryKeyPosition=0, defaultValue='null'}, customerId=Column{name='customerId', type='TEXT',affinity='2',notNull=false,primaryKeyPosition=0, defaultValue='null'}, id=Column{name='id', type='INTEGER', 亲和力='3',notNull=false,primaryKeyPosition=1, defaultValue='null'}, header=Column{name='header', type='TEXT', 亲和力='2',notNull=false,primaryKeyPosition=0, defaultValue='null'},priority=Column{name='priority',type='TEXT', 亲和力='2',notNull=false,primaryKeyPosition=0, defaultValue='null'}, notificationText=Column{name='notificationText', type='TEXT',affinity='2',notNull=false,primaryKeyPosition=0, defaultValue='null'}, alertMessage=Column{name='alertMessage', type='TEXT',affinity='2',notNull=false,primaryKeyPosition=0, defaultValue='null'}},foreignKeys=[],indices=[]}
查询:
database.execSQL("CREATE TABLE IF NOT EXISTS insta_alerts(id INTEGER PRIMARY KEY,campaign TEXT,notificationText TEXT,header TEXT,alertMessage TEXT,priority TEXT,sentDate TEXT,smsText TEXT,customerId TEXT,isSeen INTEGER, CONSTRAINT index_insta_alerts_smsText_customerId UNIQUE(smsText, customerId) ON CONFLICT REPLACE)")
型号:
@Entity(
tableName = "insta_alerts", indices =
[Index(
value = ["smsText", "customerId"],
unique = true
)]
)
@Parcelize
data class CEInstaViewDetailsDTO(
@PrimaryKey(/*autoGenerate = true*/)
@ColumnInfo(name = "id")
@SerializedName("id")
var id: Long? = null,
@ColumnInfo(name = "campaign")
@SerializedName("campaign")
var campaign: String? = null,
@ColumnInfo(name = "notificationText")
@SerializedName("notificationText")
var notificationText: String? = null,
@ColumnInfo(name = "header")
@SerializedName("header")
var header: String? = null,
@ColumnInfo(name = "alertMessage")
@SerializedName("alertMessage")
var alertMessage: String? = null,
@ColumnInfo(name = "priority")
@SerializedName("priority")
var priority: String? = null,
@ColumnInfo(name = "sentDate")
@SerializedName("sentDate")
var sentDate: String? = null,
@ColumnInfo(name = "smsText")
@SerializedName("smsText")
var smsText: String? = null,
@ColumnInfo(name = "customerId")
@SerializedName("customerId")
var customerId: String? = null,
@ColumnInfo(name = "isSeen")
@SerializedName("isSeen")
var isSeen: Int? = null
) : Parcelable
【问题讨论】:
标签: android android-room unique-key