Android 如何在以后的升级中添加多个索引来处理room db迁移
我试图升级room db版本,在上一个版本中,表有一个唯一的索引,当我在当前版本中添加一个索引时,它给了我以下错误 期望值:Android 如何在以后的升级中添加多个索引来处理room db迁移,android,kotlin,android-room,Android,Kotlin,Android Room,我试图升级room db版本,在上一个版本中,表有一个唯一的索引,当我在当前版本中添加一个索引时,它给了我以下错误 期望值: TableInfo{name='SubmitActivityTrackerStoreOrder', columns={orderType=Column{name='orderType', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, product
TableInfo{name='SubmitActivityTrackerStoreOrder', columns={orderType=Column{name='orderType', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, productId=Column{name='productId', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, columnId=Column{name='columnId', type='INTEGER', affinity='3', notNull=false, primaryKeyPosition=1, defaultValue='null'}, distributedProductQuantity=Column{name='distributedProductQuantity', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, productData=Column{name='productData', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, storeId=Column{name='storeId', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, userId=Column{name='userId', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, productName=Column{name='productName', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, productImage=Column{name='productImage', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, brandId=Column{name='brandId', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, promoProductQuantity=Column{name='promoProductQuantity', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, activityTrackerId=Column{name='activityTrackerId', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, syncStatus=Column{name='syncStatus', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}}, foreignKeys=[], indices=[Index{name='index_SubmitActivityTrackerStoreOrder_productId_activityTrackerId', unique=true, columns=[productId, activityTrackerId]}]}
TableInfo{name='SubmitActivityTrackerStoreOrder', columns={orderType=Column{name='orderType', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, productId=Column{name='productId', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, columnId=Column{name='columnId', type='INTEGER', affinity='3', notNull=false, primaryKeyPosition=1, defaultValue='null'}, distributedProductQuantity=Column{name='distributedProductQuantity', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, productData=Column{name='productData', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, storeId=Column{name='storeId', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, userId=Column{name='userId', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, productName=Column{name='productName', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, productImage=Column{name='productImage', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, brandId=Column{name='brandId', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, promoProductQuantity=Column{name='promoProductQuantity', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, activityTrackerId=Column{name='activityTrackerId', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, syncStatus=Column{name='syncStatus', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}}, foreignKeys=[], indices=[Index{name='index_SubmitActivityTrackerStoreOrder_productId', unique=true, columns=[productId]}, Index{name='index_SubmitActivityTrackerStoreOrder_productId_activityTrackerId', unique=true, columns=[productId, activityTrackerId]}]}
@Entity(indices = [Index(value = ["productId"], unique = true)])
data class SubmitActivityTrackerStoreOrder(
var activityTrackerId: String,
var storeId: String,
var brandId: String?,
var productId: String,
var productData: String,
var productName: String,
var promoProductQuantity: String,
var distributedProductQuantity: String,
var syncStatus: String,
var productImage: String,
var userId: String
) {
@PrimaryKey(autoGenerate = true)
var columnId: Int? = null
}
@Entity(indices = [Index(value = ["productId", "activityTrackerId"], unique = true)])
data class SubmitActivityTrackerStoreOrder(
var activityTrackerId: String,
var storeId: String,
var brandId: String?,
var productId: String,
var productData: String,
var productName: String,
var promoProductQuantity: String,
var distributedProductQuantity: String,
var syncStatus: String,
var productImage: String,
var orderType: String?,
var userId: String
) {
@PrimaryKey(autoGenerate = true)
var columnId: Int? = null
}
_db.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS `index_SubmitActivityTrackerStoreOrder_productId_activityTrackerId` ON `SubmitActivityTrackerStoreOrder` (`productId`, `activityTrackerId`)");
找到:
TableInfo{name='SubmitActivityTrackerStoreOrder', columns={orderType=Column{name='orderType', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, productId=Column{name='productId', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, columnId=Column{name='columnId', type='INTEGER', affinity='3', notNull=false, primaryKeyPosition=1, defaultValue='null'}, distributedProductQuantity=Column{name='distributedProductQuantity', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, productData=Column{name='productData', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, storeId=Column{name='storeId', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, userId=Column{name='userId', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, productName=Column{name='productName', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, productImage=Column{name='productImage', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, brandId=Column{name='brandId', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, promoProductQuantity=Column{name='promoProductQuantity', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, activityTrackerId=Column{name='activityTrackerId', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, syncStatus=Column{name='syncStatus', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}}, foreignKeys=[], indices=[Index{name='index_SubmitActivityTrackerStoreOrder_productId_activityTrackerId', unique=true, columns=[productId, activityTrackerId]}]}
TableInfo{name='SubmitActivityTrackerStoreOrder', columns={orderType=Column{name='orderType', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, productId=Column{name='productId', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, columnId=Column{name='columnId', type='INTEGER', affinity='3', notNull=false, primaryKeyPosition=1, defaultValue='null'}, distributedProductQuantity=Column{name='distributedProductQuantity', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, productData=Column{name='productData', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, storeId=Column{name='storeId', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, userId=Column{name='userId', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, productName=Column{name='productName', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, productImage=Column{name='productImage', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, brandId=Column{name='brandId', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, promoProductQuantity=Column{name='promoProductQuantity', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, activityTrackerId=Column{name='activityTrackerId', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, syncStatus=Column{name='syncStatus', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}}, foreignKeys=[], indices=[Index{name='index_SubmitActivityTrackerStoreOrder_productId', unique=true, columns=[productId]}, Index{name='index_SubmitActivityTrackerStoreOrder_productId_activityTrackerId', unique=true, columns=[productId, activityTrackerId]}]}
@Entity(indices = [Index(value = ["productId"], unique = true)])
data class SubmitActivityTrackerStoreOrder(
var activityTrackerId: String,
var storeId: String,
var brandId: String?,
var productId: String,
var productData: String,
var productName: String,
var promoProductQuantity: String,
var distributedProductQuantity: String,
var syncStatus: String,
var productImage: String,
var userId: String
) {
@PrimaryKey(autoGenerate = true)
var columnId: Int? = null
}
@Entity(indices = [Index(value = ["productId", "activityTrackerId"], unique = true)])
data class SubmitActivityTrackerStoreOrder(
var activityTrackerId: String,
var storeId: String,
var brandId: String?,
var productId: String,
var productData: String,
var productName: String,
var promoProductQuantity: String,
var distributedProductQuantity: String,
var syncStatus: String,
var productImage: String,
var orderType: String?,
var userId: String
) {
@PrimaryKey(autoGenerate = true)
var columnId: Int? = null
}
_db.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS `index_SubmitActivityTrackerStoreOrder_productId_activityTrackerId` ON `SubmitActivityTrackerStoreOrder` (`productId`, `activityTrackerId`)");
第一次迁移中的数据库实体:
TableInfo{name='SubmitActivityTrackerStoreOrder', columns={orderType=Column{name='orderType', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, productId=Column{name='productId', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, columnId=Column{name='columnId', type='INTEGER', affinity='3', notNull=false, primaryKeyPosition=1, defaultValue='null'}, distributedProductQuantity=Column{name='distributedProductQuantity', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, productData=Column{name='productData', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, storeId=Column{name='storeId', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, userId=Column{name='userId', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, productName=Column{name='productName', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, productImage=Column{name='productImage', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, brandId=Column{name='brandId', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, promoProductQuantity=Column{name='promoProductQuantity', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, activityTrackerId=Column{name='activityTrackerId', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, syncStatus=Column{name='syncStatus', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}}, foreignKeys=[], indices=[Index{name='index_SubmitActivityTrackerStoreOrder_productId_activityTrackerId', unique=true, columns=[productId, activityTrackerId]}]}
TableInfo{name='SubmitActivityTrackerStoreOrder', columns={orderType=Column{name='orderType', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, productId=Column{name='productId', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, columnId=Column{name='columnId', type='INTEGER', affinity='3', notNull=false, primaryKeyPosition=1, defaultValue='null'}, distributedProductQuantity=Column{name='distributedProductQuantity', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, productData=Column{name='productData', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, storeId=Column{name='storeId', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, userId=Column{name='userId', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, productName=Column{name='productName', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, productImage=Column{name='productImage', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, brandId=Column{name='brandId', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, promoProductQuantity=Column{name='promoProductQuantity', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, activityTrackerId=Column{name='activityTrackerId', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, syncStatus=Column{name='syncStatus', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}}, foreignKeys=[], indices=[Index{name='index_SubmitActivityTrackerStoreOrder_productId', unique=true, columns=[productId]}, Index{name='index_SubmitActivityTrackerStoreOrder_productId_activityTrackerId', unique=true, columns=[productId, activityTrackerId]}]}
@Entity(indices = [Index(value = ["productId"], unique = true)])
data class SubmitActivityTrackerStoreOrder(
var activityTrackerId: String,
var storeId: String,
var brandId: String?,
var productId: String,
var productData: String,
var productName: String,
var promoProductQuantity: String,
var distributedProductQuantity: String,
var syncStatus: String,
var productImage: String,
var userId: String
) {
@PrimaryKey(autoGenerate = true)
var columnId: Int? = null
}
@Entity(indices = [Index(value = ["productId", "activityTrackerId"], unique = true)])
data class SubmitActivityTrackerStoreOrder(
var activityTrackerId: String,
var storeId: String,
var brandId: String?,
var productId: String,
var productData: String,
var productName: String,
var promoProductQuantity: String,
var distributedProductQuantity: String,
var syncStatus: String,
var productImage: String,
var orderType: String?,
var userId: String
) {
@PrimaryKey(autoGenerate = true)
var columnId: Int? = null
}
_db.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS `index_SubmitActivityTrackerStoreOrder_productId_activityTrackerId` ON `SubmitActivityTrackerStoreOrder` (`productId`, `activityTrackerId`)");
在第一次迁移中,我使用的是
_db.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS `index_SubmitActivityTrackerStoreOrder_productId` ON `SubmitActivityTrackerStoreOrder` (`productId`)");
第二次迁移中的数据库实体:
TableInfo{name='SubmitActivityTrackerStoreOrder', columns={orderType=Column{name='orderType', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, productId=Column{name='productId', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, columnId=Column{name='columnId', type='INTEGER', affinity='3', notNull=false, primaryKeyPosition=1, defaultValue='null'}, distributedProductQuantity=Column{name='distributedProductQuantity', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, productData=Column{name='productData', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, storeId=Column{name='storeId', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, userId=Column{name='userId', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, productName=Column{name='productName', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, productImage=Column{name='productImage', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, brandId=Column{name='brandId', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, promoProductQuantity=Column{name='promoProductQuantity', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, activityTrackerId=Column{name='activityTrackerId', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, syncStatus=Column{name='syncStatus', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}}, foreignKeys=[], indices=[Index{name='index_SubmitActivityTrackerStoreOrder_productId_activityTrackerId', unique=true, columns=[productId, activityTrackerId]}]}
TableInfo{name='SubmitActivityTrackerStoreOrder', columns={orderType=Column{name='orderType', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, productId=Column{name='productId', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, columnId=Column{name='columnId', type='INTEGER', affinity='3', notNull=false, primaryKeyPosition=1, defaultValue='null'}, distributedProductQuantity=Column{name='distributedProductQuantity', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, productData=Column{name='productData', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, storeId=Column{name='storeId', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, userId=Column{name='userId', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, productName=Column{name='productName', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, productImage=Column{name='productImage', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, brandId=Column{name='brandId', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, promoProductQuantity=Column{name='promoProductQuantity', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, activityTrackerId=Column{name='activityTrackerId', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, syncStatus=Column{name='syncStatus', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}}, foreignKeys=[], indices=[Index{name='index_SubmitActivityTrackerStoreOrder_productId', unique=true, columns=[productId]}, Index{name='index_SubmitActivityTrackerStoreOrder_productId_activityTrackerId', unique=true, columns=[productId, activityTrackerId]}]}
@Entity(indices = [Index(value = ["productId"], unique = true)])
data class SubmitActivityTrackerStoreOrder(
var activityTrackerId: String,
var storeId: String,
var brandId: String?,
var productId: String,
var productData: String,
var productName: String,
var promoProductQuantity: String,
var distributedProductQuantity: String,
var syncStatus: String,
var productImage: String,
var userId: String
) {
@PrimaryKey(autoGenerate = true)
var columnId: Int? = null
}
@Entity(indices = [Index(value = ["productId", "activityTrackerId"], unique = true)])
data class SubmitActivityTrackerStoreOrder(
var activityTrackerId: String,
var storeId: String,
var brandId: String?,
var productId: String,
var productData: String,
var productName: String,
var promoProductQuantity: String,
var distributedProductQuantity: String,
var syncStatus: String,
var productImage: String,
var orderType: String?,
var userId: String
) {
@PrimaryKey(autoGenerate = true)
var columnId: Int? = null
}
_db.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS `index_SubmitActivityTrackerStoreOrder_productId_activityTrackerId` ON `SubmitActivityTrackerStoreOrder` (`productId`, `activityTrackerId`)");
在第二次迁移中,我使用:
TableInfo{name='SubmitActivityTrackerStoreOrder', columns={orderType=Column{name='orderType', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, productId=Column{name='productId', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, columnId=Column{name='columnId', type='INTEGER', affinity='3', notNull=false, primaryKeyPosition=1, defaultValue='null'}, distributedProductQuantity=Column{name='distributedProductQuantity', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, productData=Column{name='productData', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, storeId=Column{name='storeId', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, userId=Column{name='userId', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, productName=Column{name='productName', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, productImage=Column{name='productImage', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, brandId=Column{name='brandId', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, promoProductQuantity=Column{name='promoProductQuantity', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, activityTrackerId=Column{name='activityTrackerId', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, syncStatus=Column{name='syncStatus', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}}, foreignKeys=[], indices=[Index{name='index_SubmitActivityTrackerStoreOrder_productId_activityTrackerId', unique=true, columns=[productId, activityTrackerId]}]}
TableInfo{name='SubmitActivityTrackerStoreOrder', columns={orderType=Column{name='orderType', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, productId=Column{name='productId', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, columnId=Column{name='columnId', type='INTEGER', affinity='3', notNull=false, primaryKeyPosition=1, defaultValue='null'}, distributedProductQuantity=Column{name='distributedProductQuantity', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, productData=Column{name='productData', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, storeId=Column{name='storeId', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, userId=Column{name='userId', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, productName=Column{name='productName', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, productImage=Column{name='productImage', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, brandId=Column{name='brandId', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, promoProductQuantity=Column{name='promoProductQuantity', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, activityTrackerId=Column{name='activityTrackerId', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, syncStatus=Column{name='syncStatus', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}}, foreignKeys=[], indices=[Index{name='index_SubmitActivityTrackerStoreOrder_productId', unique=true, columns=[productId]}, Index{name='index_SubmitActivityTrackerStoreOrder_productId_activityTrackerId', unique=true, columns=[productId, activityTrackerId]}]}
@Entity(indices = [Index(value = ["productId"], unique = true)])
data class SubmitActivityTrackerStoreOrder(
var activityTrackerId: String,
var storeId: String,
var brandId: String?,
var productId: String,
var productData: String,
var productName: String,
var promoProductQuantity: String,
var distributedProductQuantity: String,
var syncStatus: String,
var productImage: String,
var userId: String
) {
@PrimaryKey(autoGenerate = true)
var columnId: Int? = null
}
@Entity(indices = [Index(value = ["productId", "activityTrackerId"], unique = true)])
data class SubmitActivityTrackerStoreOrder(
var activityTrackerId: String,
var storeId: String,
var brandId: String?,
var productId: String,
var productData: String,
var productName: String,
var promoProductQuantity: String,
var distributedProductQuantity: String,
var syncStatus: String,
var productImage: String,
var orderType: String?,
var userId: String
) {
@PrimaryKey(autoGenerate = true)
var columnId: Int? = null
}
_db.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS `index_SubmitActivityTrackerStoreOrder_productId_activityTrackerId` ON `SubmitActivityTrackerStoreOrder` (`productId`, `activityTrackerId`)");
你能分享你的AppDatabase代码吗?您是如何处理迁移的?