Theo các tài liệu :
Bạn có thể đặt đối số bộ xử lý chú thích (room.schemaLocation) để báo cho Room xuất lược đồ vào một thư mục. Mặc dù không bắt buộc, nhưng nên có lịch sử phiên bản trong cơ sở mã của bạn và bạn nên cam kết tệp đó vào hệ thống kiểm soát phiên bản của mình (nhưng không gửi nó cùng với ứng dụng của bạn!).
Vì vậy, nếu bạn không cần kiểm tra lược đồ và bạn muốn loại bỏ cảnh báo, chỉ cần thêm exportSchema = false
vào RoomDatabase
, như sau.
@Database(entities = { YourEntity.class }, version = 1, exportSchema = false)
public abstract class AppDatabase extends RoomDatabase {
//...
}
Nếu bạn làm theo câu trả lời @mikejonesguy bên dưới, bạn sẽ tuân theo thực tiễn tốt được đề cập trong các tài liệu :). Về cơ bản, bạn sẽ nhận được một .json
tập tin trong ../app/schemas/
thư mục của bạn . Và nó trông giống như thế này:
{
"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\")"
]
}
}
Nếu sự hiểu biết của tôi là chính xác, bạn sẽ nhận được một tệp như vậy với mỗi bản cập nhật phiên bản cơ sở dữ liệu, để bạn có thể dễ dàng theo dõi lịch sử của db của mình.