Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Golang tidak boleh "menjana sqlc"

Golang tidak boleh "menjana sqlc"

王林
王林ke hadapan
2024-02-09 11:09:181087semak imbas

Golang 无法“sqlc 生成”

editor php Banana membawakan anda isu penting tentang Golang: masalah tidak dapat menggunakan sqlc untuk menjana kod. Golang ialah bahasa pengaturcaraan berkuasa yang sering digunakan untuk membangunkan aplikasi back-end yang cekap dan boleh dipercayai. Walau bagaimanapun, sesetengah pembangun telah menghadapi masalah menggunakan sqlc dan tidak dapat menjana kod yang diperlukan. Masalah ini menyebabkan kekeliruan kepada pembangun, jadi dalam artikel ini kami akan meneroka kemungkinan punca dan menyediakan penyelesaian untuk membantu anda menyelesaikan kekeliruan ini. Mari lihat!

Kandungan soalan

Saya menggunakan Windows dan Ubuntu WSL tetapi saya mendapat ralat ini apabila saya cuba menjana 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.

Apabila saya mencuba go env arahan tetapi ia berada dalam persekitaran saya tetapi masih tidak dapat menjana 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'

Penyelesaian

Saya dapat meniru ini pada pemasangan baru WSL2 Ubuntu 22.04 (berjalan pada Win 11). Menggunakan imej baharu, saya memasang Go (1.21.4) dan sqlc (v1.23.0),然后运行 ​​sqlcgenerate (menggunakan repositori contoh daripada tutorial yang disebutkan dalam soalan) dan mendapat ralat:

# 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.

Menariknya, semuanya berfungsi dengan baik di bawah Ubuntu 20.04 (juga pada WSL2).

Terdapat isu keserasian dengan Ubuntu 20.04 dan binari yang didayakan CGO sqlc 并启用 CGO 22.04 (tidak benar-benar melihat isu ini secara terperinci!); jadi nampaknya berbaloi untuk dipasang semula

:

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 示例生成了 goSelepas melakukan ini,

fail, tiada masalah).

Nota: Memandangkan ini berfungsi, saya fikir saya akan menambah ulasan untuk sebarang soalan a>sqlc yang serupa dan terjumpa komen ini

mencadangkan penyelesaian asas yang sama (saya tidak menangkapnya semasa saya mencari malam tadi). 🎜

Atas ialah kandungan terperinci Golang tidak boleh "menjana sqlc". Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam