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

Windows+Ubuntu WSL环境下sqlc generate报错求助

解决WSL Ubuntu中sqlc generate提示CGO_ENABLED=1但仍报错的问题

问题场景

在Windows搭配Ubuntu WSL环境执行sqlc generate时,报错提示“the PostgreSQL engine requires cgo. Please set CGO_ENABLED=1”。即使执行export CGO_ENABLED=1 && sqlc generate,仍报相同错误,且go env显示CGO_ENABLED已为'1',依旧无法完成sqlc生成操作。

报错信息

执行sqlc generate的报错:

sqlc generate
# package database
sql/schema/001_users.sql:1:1: the PostgreSQL engine requires cgo. Please set CGO_ENABLED=1.

执行export CGO_ENABLED=1 && sqlc generate的报错:

export CGO_ENABLED=1 && sqlc generate
# package database
sql/schema/001_users.sql:1:1: the PostgreSQL engine requires cgo. Please set CGO_ENABLED=1.

环境变量信息(go env输出):

GO111MODULE=''
GOARCH='amd64'
GOBIN=''
GOCACHE='/home/user/.cache/go-build'
GOENV='/home/user/.config/go/env'
.
.
.
GOHOSTARCH='amd64'
GOHOSTOS='linux'
GOINSECURE=''
GOMODCACHE='/home/user/go/pkg/mod'
GONOPROXY=''
GONOSUMDB=''
GOOS='linux'
GOPATH='/home/user/go'
GOPRIVATE=''
GOPROXY='https://proxy.golang.org,direct'
GOROOT='/usr/local/go'
GOSUMDB='sum.golang.org'
.
.
.
CGO_ENABLED='1'
GOMOD='/mnt/c/Users/User/Desktop/Golang/main/go.mod'

解决方法

  1. 重新编译带CGO的sqlc版本
    静态编译的sqlc可能无法读取当前shell的CGO环境变量,重新编译并安装:
CGO_ENABLED=1 go install github.com/sqlc-dev/sqlc/cmd/sqlc@latest

确保新安装的sqlc在PATH中优先级高于旧版本。

  1. 切换到项目根目录执行命令
    从环境变量看,项目go.mod位于Windows挂载目录,先切换到该目录再操作:
cd /mnt/c/Users/User/Desktop/Golang/main
export CGO_ENABLED=1
sqlc generate
  1. 安装PostgreSQL开发依赖库
    sqlc的PostgreSQL引擎需要依赖libpq库,执行以下命令安装:
sudo apt update && sudo apt install libpq-dev
  1. 永久设置CGO_ENABLED环境变量
    将环境变量配置写入shell配置文件,避免每次手动设置:
echo "export CGO_ENABLED=1" >> ~/.bashrc
source ~/.bashrc

之后再执行sqlc generate即可。

内容的提问来源于stack exchange,提问作者许家宝

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 16:07:22