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中文網其他相關文章!