Golang tidak boleh 'menjana sqlc'

王林
Lepaskan: 2024-02-09 11:09:18
ke hadapan
1089 orang telah melayarinya

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.
Salin selepas log masuk
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.
Salin selepas log masuk

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'
Salin selepas log masuk

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.
Salin selepas log masuk

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
Salin selepas log masuk
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!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan