Sar*_*med 7 android kotlin android-studio sqldelight kotlin-multiplatform
我正在尝试在 SQLDelight 的表中添加更多列。我制作了一个迁移文件1.sqm。在迁移文件中,它给出了没有找到表的错误。
我的 build.gradle.kts:
sqldelight {
database("AppDatabase") {
packageName = "com.jetbrains.handson.kmm.shared.cache"
schemaOutputDirectory = file("shared/src/commonMain/sqldelight/com/jetbrains/handson/kmm/shared/cache/AppDatabase.sq")
migrationOutputDirectory = file("shared/src/commonMain/sqldelight/migrations/1.sqm")
migrationOutputFileFormat = ".sqm"
schemaOutputDirectory
deriveSchemaFromMigrations = true
}
}
Run Code Online (Sandbox Code Playgroud)
建表语句:
CREATE TABLE pos_orders(id INTEGER AS Int PRIMARY KEY, orderId INTEGER AS Int , dateandtime TEXT, restaurant_id INTEGER AS Int, restaurant_name TEXT, deliveryType_description TEXT, paymentType_description TEXT, totalAmount REAL AS Float,
process_order INTEGER AS Int, pos_accept INTEGER AS Int, pos_printed INTEGER AS Int, status INTEGER AS Int, prep_time INTEGER AS Int, desired_delivery_time TEXT, restaurant_address TEXT, customerNo TEXT, title TEXT, firstName TEXT, lastName TEXT,company TEXT, street TEXT, houseNo TEXT, zip TEXT, city TEXT, state TEXT,floor TEXT, bezirk TEXT, bellname TEXT, email TEXT, phoneNo TEXT, fax TEXT, taxAmount REAL AS Float, total REAL AS Float , deliverycharges REAL AS Float,
deliveryType INTEGER AS Int, paymentType INTEGER AS Int, comment TEXT, order_note TEXT, sender TEXT, cancelation_cause TEXT, demo_order INTEGER AS Int, orderDate TEXT, updated TEXT);
Run Code Online (Sandbox Code Playgroud)
sqldelight {
database("AppDatabase") {
packageName = "com.jetbrains.handson.kmm.shared.cache"
schemaOutputDirectory = file("com.jetbrains.handson.kmm.shared.cache")
migrationOutputDirectory = file("com.jetbrains.handson.kmm.shared.cache")
deriveSchemaFromMigrations = true
verifyMigrations = true
}
}
Run Code Online (Sandbox Code Playgroud)
将 gradle.build 更改为上面的,然后在路径中与我使用两个文件夹sqldelight编写的完全相同
共享/src/commonMain/sqldelight/com/jetbrains/handson/kmm/shared/cache/sqldelight
在 sqldelight 文件夹中放入所有数据库文件 AppDatabase.sq、1.sqm、2.sqm ... 等等
诀窍是 在 AppDatabase.sq 中仅放置数据库查询。
应用程序数据库应该看起来像
getAll:
SELECT * FROM pos_orders;
deleteAll:
DELETE FROM pos_orders;
Run Code Online (Sandbox Code Playgroud)
并创建另一个 1.sqm 来放置您的原始表格,并创建 2.sqm 来放置您的迁移。
1.sqm应该看起来像
CREATE TABLE pos_orders(id INTEGER AS Int PRIMARY KEY, orderId INTEGER AS Int , dateandtime TEXT, restaurant_id INTEGER AS Int, restaurant_name TEXT, deliveryType_description TEXT, paymentType_description TEXT, totalAmount REAL AS Float,
process_order INTEGER AS Int, pos_accept INTEGER AS Int, pos_printed INTEGER AS Int, status INTEGER AS Int, prep_time INTEGER AS Int, desired_delivery_time TEXT, restaurant_address TEXT, customerNo TEXT, title TEXT, firstName TEXT, lastName TEXT,company TEXT, street TEXT, houseNo TEXT, zip TEXT, city TEXT, state TEXT,floor TEXT, bezirk TEXT, bellname TEXT, email TEXT, phoneNo TEXT, fax TEXT, taxAmount REAL AS Float, total REAL AS Float , deliverycharges REAL AS Float,
deliveryType INTEGER AS Int, paymentType INTEGER AS Int, comment TEXT, order_note TEXT, sender TEXT, cancelation_cause TEXT, demo_order INTEGER AS Int, orderDate TEXT, updated TEXT);
Run Code Online (Sandbox Code Playgroud)
2.sqm应该看起来像
ALTER TABLE pos_orders ADD COLUMN year INTEGER ;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4059 次 |
| 最近记录: |