Heim > Artikel > Backend-Entwicklung > Golang kann nicht „sqlc generieren“
Der PHP-Editor Banana bringt Ihnen eine wichtige Frage zu Golang: das Problem, dass SQLC nicht zum Generieren von Code verwendet werden kann. Golang ist eine leistungsstarke Programmiersprache, die häufig zur Entwicklung effizienter und zuverlässiger Back-End-Anwendungen verwendet wird. Einige Entwickler sind jedoch auf Probleme bei der Verwendung von SQLC gestoßen und konnten den erforderlichen Code nicht generieren. Dieses Problem führt bei Entwicklern zu Verwirrung. In diesem Artikel werden wir die möglichen Ursachen untersuchen und Lösungen bereitstellen, die Ihnen bei der Lösung dieser Verwirrung helfen. Lass uns einen Blick darauf werfen!
Ich verwende Windows und Ubuntu WSL, erhalte jedoch diese Fehlermeldung, wenn ich versuche, SQLC zu generieren.
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.
Wenn ich den Befehl go env
ausprobiere, er sich in meiner Umgebung befindet, aber trotzdem kein SQLC generiert werden kann
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'
Ich konnte dies bei einer Neuinstallation von WSL2 Ubuntu 22.04 (unter Win 11) replizieren. Mit dem neuen Image habe ich Go (1.21.4) und sqlc
(v1.23.0),然后运行 sqlcgenerate
installiert (unter Verwendung des Beispiel-Repositorys aus dem in der Frage erwähnten Tutorial) und die Fehlermeldung erhalten:
# 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.
Interessanterweise funktioniert unter Ubuntu 20.04 (auch auf WSL2) alles einwandfrei.
Es gibt ein Kompatibilitätsproblem mit Ubuntu 20.04 und CGO-fähigen Binärdateien 22.04 (habe mich nicht wirklich im Detail mit diesem Problem befasst!); es scheint also einen Versuch wert, es neu zu installieren 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
Danach sqlc
起作用了(成功为 6-createfeed
示例生成了 go
Datei, keine Probleme).
Hinweis: Da dies funktioniert, dachte ich, ich füge einen Kommentar für alle ähnlichen SQLC-Fragen a> hinzu und stoße auf diesen Kommentar, der die gleiche grundlegende Lösung vorschlägt (das habe ich gestern Abend beim Suchen nicht bemerkt).
Das obige ist der detaillierte Inhalt vonGolang kann nicht „sqlc generieren“. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!