ฉันมีข้อจำกัดเฉพาะในตารางหนึ่งในฐานข้อมูลเก่า ในขณะที่ย้ายไปยังห้อง ฉันได้สร้างตารางใหม่ตามคำแนะนำที่ให้ไว้ใน [ลิงก์] [1] และใช้ข้อจำกัดเฉพาะโดยใช้คีย์เวิร์ด "indices" ในคลาสเอนทิตี "TaskDetail" และจัดให้มีการโยกย้ายที่ว่างเปล่า ขณะรันการทดสอบการย้ายข้อมูล ฉันได้รับข้อผิดพลาดที่เกี่ยวข้องกับข้อจำกัดเฉพาะดังที่กล่าวไว้ด้านล่าง ฉันทำอะไรผิดหรือเปล่า??
สคีมาฐานข้อมูล
String CREATE_TABLE_TASK = "CREATE TABLE IF NOT EXISTS "+TASK+
" (`task_id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT," +
"`task_note` TEXT," +
"`status` INTEGER NOT NULL)";
String CREATE_TABLE_TASK_DETAIL = "CREATE TABLE IF NOT EXISTS "+TASK_DETAIL+
" (`id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT," +
"`detail` TEXT NOT NULL UNIQUE)";
ตารางเอนทิตีห้อง
@Entity(tableName = "task_master")
public class Task {
@ColumnInfo(name = "task_id")
@PrimaryKey(autoGenerate = true)
@NonNull
private int taskId;
@ColumnInfo(name = "task_note")
private String task;
private @TaskStatus
int status;
}
//TOKEN DETAIL TABLE
@Entity(tableName = "task_detail",indices ={@Index(name = "detail",value = "detail",unique = true)})
public class TaskDetail {
@PrimaryKey(autoGenerate = true)
private int id;
@NonNull
private String detail;
}
คลาสฐานข้อมูลห้อง
@Database(entities = {Task.class, TaskDetail.class},version = 2,exportSchema = true)
public abstract class AppDatabase extends RoomDatabase{
private static final Object sObject = new Object();
private static AppDatabase sInstance;
public abstract TaskDao getTaskDao();
public static AppDatabase getInstance(Context context){
if(sInstance == null){
synchronized (sObject){
if(sInstance == null){
sInstance = Room.databaseBuilder(context,AppDatabase.class,"task.db")
.allowMainThreadQueries()
.build();
}
}
}
return sInstance;
}
}
ข้อผิดพลาด
expacted:TableInfo{name='task_detail', columns={id=Column{name='id', type='INTEGER', notNull=true, primaryKeyPosition=1}, detail=Column{name='detail', type='TEXT', notNull=true, primaryKeyPosition=0}}, foreignKeys=[], indices=[Index{name='detail', unique=true, columns=[detail]}]}
found:TableInfo{name='task_detail', columns={id=Column{name='id', type='INTEGER', notNull=true, primaryKeyPosition=1}, detail=Column{name='detail', type='TEXT', notNull=true, primaryKeyPosition=0}}, foreignKeys=[], indices=[]}