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

如何在SQLC中将PostgreSQL布尔类型映射为null.Bool而非sql.NullBool

可行,按以下步骤调整配置即可

核心问题:配置的类型匹配或写法有误

你之前的尝试没生效,大概率是类型覆盖的配置写法不对,或者没匹配到PostgreSQL布尔类型的正确标识。PostgreSQL的布尔类型官方名称是boolean,sqlc对这个类型的覆盖需要精准配置。

正确的sqlc.yaml配置示例

在你的配置文件的gen.go.overrides节点下添加以下规则:

version: "2"
sql:
  - schema: "your_schema.sql"
    queries: "your_queries.sql"
    engine: "postgresql"
    gen:
      go:
        package: "your_db_package"
        out: "./db"
        overrides:
          # 已有的text、timestamptz覆盖
          - db_type: "text"
            go_type:
              import: "gopkg.in/guregu/null.v4"
              type: "String"
          - db_type: "timestamptz"
            go_type:
              import: "gopkg.in/guregu/null.v4"
              type: "Time"
          # 新增布尔类型的覆盖
          - db_type: "boolean"
            go_type:
              import: "gopkg.in/guregu/null.v4"
              type: "Bool"

额外注意事项

  1. 确保SQL参数是可选的:如果你的SetUserParams对应UPDATE语句,要保证active参数是可选逻辑(比如用COALESCE($1, active)),这样sqlc才会生成nullable类型,而非普通的bool。
  2. 检查拼写和导入路径:确认gopkg.in/guregu/null.v4已经通过go get安装,配置里的import路径和type名称(Bool首字母大写)不能写错。
  3. 重新生成代码:修改配置后,执行sqlc generate重新生成结构体,此时SetUserParams里的Active字段就会变成null.Bool。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 17:25:18