I am using windows and Ubuntu WSL but get this error when I try to 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
# package database
sql/schema/001_users.sql:1:1: the PostgreSQL engine requires cgo. Please set CGO_ENABLED=1.
When I try go env
command, but it’s in my environment but still not able to sqlc generate
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'
2
Answers
I was able to duplicate this on a fresh install of WSL2 Ubuntu 22.04 (running on Win 11). With the fresh image I installed Go (1.21.4) &
sqlc
(v1.23.0) then ransqlc generate
(using the example repo from the tutorial mentioned in the question) and got the error:Interestingly everything worked fine under Ubuntu 20.04 (also on WSL2).
There is an issue with the compatibility of CGO enabled binaries across Ubuntu 20.04 and 22.04 (did not look at the issue in any real detail!); so it seemed worth trying to re-install
sqlc
withCGO
enabled:After doing this
sqlc
worked (successfully generated thego
files for the6-createfeed
example without issue).Note: As this worked I thought I’d add comments to any similar sqlc issues and came across this comment suggesting the same basic solution (did not spot this when I looked last night).
You can see a complete and problem-free service here and compare your problem with the correct service.