You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何KMM项目中SQLDelight的generateSqlDelightSchema任务不可见?

问题分析:SQLDelight generateSqlDelightSchema 任务不可见的原因及解决办法

可能的原因

1. SQLDelight版本与文档版本不匹配

你参考的是2.0.2版本的文档,但如果项目中使用的是2.1.0及以上版本的SQLDelight,generateSqlDelightSchema这个通用任务已被移除,替换为针对单个数据库的命名任务:generate<DatabaseName>Schema。比如你的数据库名为ContentHuntDatabase,对应的任务名应为generateContentHuntDatabaseSchema。

2. deriveSchemaFromMigrations = true 的配置影响

当开启deriveSchemaFromMigrations时,SQLDelight会从迁移文件自动推导schema,而非依赖主schema文件。这种情况下,通用的generateSqlDelightSchema任务不会被创建,你需要使用对应数据库的专属schema生成任务。

3. Gradle缓存或任务未刷新

Gradle的缓存可能导致新任务未被识别,或者直接执行./gradlew tasks时未显示所有分组任务。SQLDelight的任务都属于sqldelight分组,默认不会在全局任务列表中展示。

4. 任务命名规则变更

从SQLDelight 2.1.0开始,所有数据库相关任务都采用[action]<DatabaseName>[suffix]的命名格式,不再使用全局通用任务名,避免多数据库项目中的任务冲突。

解决步骤

  1. 查看所有SQLDelight相关任务
    执行以下命令列出所有SQLDelight分组的任务:
./gradlew tasks --group=sqldelight

在输出中查找类似generateContentHuntDatabaseSchema的任务,这就是你需要的schema生成任务。

  1. 确认SQLDelight版本
    检查项目根目录的build.gradle.kts或build.gradle中SQLDelight的版本,若版本≥2.1.0,直接使用数据库专属任务名。

  2. 刷新Gradle缓存
    执行以下命令清理缓存并重新同步项目:

./gradlew clean build --refresh-dependencies

之后再次执行任务列表命令查看是否能找到目标任务。

  1. 调整配置(可选)
    如果不需要从迁移推导schema,可以临时关闭deriveSchemaFromMigrations = true,但这会失去从迁移自动生成schema的功能,仅建议用于验证任务是否存在。

内容的提问来源于stack exchange,提问作者Georg Prohaska

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 04:17:04