Golang kann nicht „sqlc generieren'

王林
Freigeben: 2024-02-09 11:09:18
nach vorne
1092 Leute haben es durchsucht

Golang 无法“sqlc 生成”

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!

Frageninhalt

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.
Nach dem Login kopieren
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.
Nach dem Login kopieren

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'
Nach dem Login kopieren

Workaround

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.
Nach dem Login kopieren

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
Nach dem Login kopieren

Danach sqlc 起作用了(成功为 6-createfeed 示例生成了 goDatei, 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!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage