php小编香蕉为您带来关于Golang的重要问题:无法使用sqlc生成代码的问题。Golang作为一种强大的编程语言,常被用于开发高效且可靠的后端应用程序。然而,一些开发者在使用sqlc时遇到了问题,无法生成所需的代码。这个问题给开发者带来了困扰,因此我们将在本文中探讨可能的原因,并提供解决方案,帮助您解决这个疑惑。让我们一起来看看吧!
我使用的是 Windows 和 Ubuntu WSL,但当我尝试生成 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.
当我尝试 go env
命令,但它在我的环境中但仍然无法生成 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'
我能够在全新安装的 WSL2 Ubuntu 22.04(在 Win 11 上运行)上复制此内容。使用新映像,我安装了 Go (1.21.4) 和 sqlc
(v1.23.0),然后运行 sqlcgenerate
(使用问题中提到的教程中的示例存储库)并收到错误:
# 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.
有趣的是,在 Ubuntu 20.04 下一切都运行良好(也在 WSL2 上)。
Ubuntu 20.04 和支持 CGO 的二进制文件的兼容性存在问题 22.04(没有真正详细地研究这个问题!);所以似乎值得尝试重新安装 sqlc
并启用 CGO
:
go env -w CGO_ENABLED=1 sudo apt update sudo apt install gcc go install github.com/sqlc-dev/sqlc/cmd/sqlc@latest
完成此操作后,sqlc
起作用了(成功为 6-createfeed
示例生成了 go
文件,没有问题)。
注意:由于这有效,我想我应该为任何类似的 sqlc 问题添加评论 a> 并遇到此评论建议相同的基本解决方案(我昨晚看的时候没有发现这一点)。
以上是Golang 无法'sqlc 生成”的详细内容。更多信息请关注PHP中文网其他相关文章!