我的 SQLDelight Gradle 块中有两个数据库:
sqldelight {
databases {
create("Database") {
packageName.set("dev.db")
}
create("OtherDatabase") {
packageName.set("dev.db2")
}
}
}
构建后,SQLDelight 出错,没有生成 /build/sqldelight 文件夹。因为我需要两个不同的ColumnId(文件夹平台/android需要ColumnId A,/ios需要ColumnId B),所以生成两个具有相同表名、相同数据库文件名和相同包名的文件的正确方法是什么?
任务:共享:生成CommonMainDatabaseInterface失败
使用方言编译 app.cash.sqldelight.dialects.sqlite_3_18.SqliteDialect
/shared/src/commonMain/sqldelight/dev/db/Tables.sq: (1, 13): 已使用名称 user 1 CREATE TABLE user( ^^^^ 2 id 整数主键,3 名称文本 4 )
/shared/src/commonMain/sqldelight/dev/db2/Tables.sq:(1, 13): 已使用名称 user 1 CREATE TABLE user 定义表( ^^^^ 2 id 整数主键,3 名称文本 4 )
失败:构建已完成,但有 2 次失败。
1:任务因异常而失败。
出了什么问题: 任务“:shared:generateCommonMainDatabaseInterface”执行失败。 执行 app.cash.sqldelight.gradle.SqlDelightTask$GenerateInterfaces 时出错 生成失败;有关详细信息,请参阅生成器错误输出。
2:任务因异常而失败。
出了什么问题: 任务“:shared:generateCommonMainOtherDatabaseInterface”执行失败。 执行 app.cash.sqldelight.gradle.SqlDelightTask$GenerateInterfaces 时出错 生成失败;有关详细信息,请参阅生成器错误输出。
3秒内构建失败 2 个可操作的任务:已执行 2 个
构建.gradle:
sqldelight {
databases {
create("Database") {
packageName.set("dev.db")
}
create("OtherDatabase") {
packageName.set("dev.db2")
}
}
}
*.sq 文件:
CREATE TABLE IF NOT EXISTS user(
_ID INTEGER PRIMARY KEY AUTOINCREMENT,
CATEGORY_ID INTEGER NOT NULL UNIQUE,
);
构建系统:
简单的方法:
尝试使用“重命名列”SQL 查询更改为相同的 ColumnId(在 Android 或 iOS 端,使用重命名 SQL 查询运行数据库迁移)。
进阶方式:
在“KMP”根项目必须创建两个“/module”文件夹:
构建(运行配置)后重新检查其是否有效(在文件夹 /generate...*.sqldelight 中)。在本机项目中进行验证: