ตามเอกสาร :
คุณสามารถตั้งค่าอาร์กิวเมนต์ตัวประมวลผลคำอธิบายประกอบ (room.schemaLocation) ให้บอก Room เพื่อส่งออก schema ไปยังโฟลเดอร์ แม้ว่าจะไม่ได้บังคับ แต่เป็นวิธีที่ดีที่จะมีประวัติรุ่นใน codebase ของคุณและคุณควรส่งไฟล์นั้นไปยังระบบควบคุมเวอร์ชันของคุณ (แต่ไม่ต้องจัดส่งด้วยแอพของคุณ!)
ดังนั้นหากคุณไม่จำเป็นต้องตรวจสอบสคีมาและคุณต้องการกำจัดคำเตือนให้เพิ่มexportSchema = false
ของคุณRoomDatabase
ดังต่อไปนี้
@Database(entities = { YourEntity.class }, version = 1, exportSchema = false)
public abstract class AppDatabase extends RoomDatabase {
//...
}
หากคุณปฏิบัติตามคำตอบ @mikejonesguy ด้านล่างคุณจะต้องปฏิบัติตามแนวปฏิบัติที่ดีที่กล่าวถึงในเอกสาร :) โดยทั่วไปคุณจะได้รับ.json
ไฟล์ใน../app/schemas/
โฟลเดอร์ของคุณ และมันก็เป็นแบบนี้:
{
"formatVersion": 1,
"database": {
"version": 1,
"identityHash": "53db508c5248423325bd5393a1c88c03",
"entities": [
{
"tableName": "sms_table",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `message` TEXT, `date` INTEGER, `client_id` INTEGER)",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER"
},
{
"fieldPath": "message",
"columnName": "message",
"affinity": "TEXT"
},
{
"fieldPath": "date",
"columnName": "date",
"affinity": "INTEGER"
},
{
"fieldPath": "clientId",
"columnName": "client_id",
"affinity": "INTEGER"
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": true
},
"indices": [],
"foreignKeys": []
}
],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, \"53db508c5248423325bd5393a1c88c03\")"
]
}
}
หากความเข้าใจของฉันถูกต้องคุณจะได้รับไฟล์ดังกล่าวพร้อมกับการอัพเดททุกเวอร์ชันของฐานข้อมูลเพื่อให้คุณสามารถติดตามประวัติของฐานข้อมูลได้อย่างง่ายดาย