Home > Article > Backend Development > Golang cannot "sqlc generate"
php Editor Banana brings you an important issue about Golang: the problem of being unable to use sqlc to generate code. Golang is a powerful programming language that is often used to develop efficient and reliable back-end applications. However, some developers have encountered problems using sqlc and are unable to generate the required code. This problem causes confusion for developers, so in this article we will explore the possible causes and provide solutions to help you solve this confusion. Let’s take a look!
I'm using Windows and Ubuntu WSL but I get this error when I try to generate sqlc.
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 the go env
command it is in my environment but still cannot generate sqlc
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'
I was able to replicate this on a fresh install of WSL2 Ubuntu 22.04 (running on Win 11). Using the new image, I installed Go (1.21.4) and sqlc
(v1.23.0) and then ran sqlcgenerate
(using the example store from the tutorial mentioned in the question library) and received the error:
# package database sql/schema/001_users.sql:1:1: the PostgreSQL engine requires cgo. Please set CGO_ENABLED=1. sql/schema/002_users_apikey.sql:1:1: the PostgreSQL engine requires cgo. Please set CGO_ENABLED=1. sql/schema/003_feeds.sql:1:1: the PostgreSQL engine requires cgo. Please set CGO_ENABLED=1.
Interestingly, everything works fine under Ubuntu 20.04 (also on WSL2).
There is an issue with compatibility of Ubuntu 20.04 and CGO-enabled binaries for 22.04 (didn't really look into this in detail!); so it seems worth trying to reinstall sqlc
and enable CGO
:
go env -w CGO_ENABLED=1 sudo apt update sudo apt install gcc go install github.com/sqlc-dev/sqlc/cmd/sqlc@latest
After doing this, sqlc
worked (successfully generated the go
file for the 6-createfeed
example, no issues).
NOTE: Since this works, I thought I'd add a comment for any similar a>sqlc questions and come across this comment suggesting the same basic solution (I looked at this last night This was not discovered at the time).
The above is the detailed content of Golang cannot "sqlc generate". For more information, please follow other related articles on the PHP Chinese website!