Gereğince docs :
Room'a şemayı bir klasöre vermesini bildirmek için ek açıklama işlemcisi bağımsız değişkeni (room.schemaLocation) ayarlayabilirsiniz. Zorunlu olmasa da, kod tabanınızda sürüm geçmişi olması iyi bir uygulamadır ve bu dosyayı sürüm kontrol sisteminize kaydetmelisiniz (ancak uygulamanızla birlikte göndermeyin!).
Şemayı kontrol etmek gerekmez ve uyarı kurtulmak istiyorum Yani eğer sadece eklemek exportSchema = false
adresinden Müşteri RoomDatabase
olarak takip.
@Database(entities = { YourEntity.class }, version = 1, exportSchema = false)
public abstract class AppDatabase extends RoomDatabase {
//...
}
Aşağıdaki @mikejonesguy cevabını takip ederseniz , dokümanlarda belirtilen iyi uygulamaları takip edersiniz :). Temelde klasörünüzde bir .json
dosya alırsınız ../app/schemas/
. Ve şuna benziyor:
{
"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\")"
]
}
}
Anlayışım doğruysa, her veritabanı sürümü güncellemesiyle böyle bir dosya alacaksınız, böylece db'nizin geçmişini kolayca takip edebilirsiniz.