Maison > développement back-end > Golang > Golang ne peut pas 'générer SQLC'

Golang ne peut pas 'générer SQLC'

王林
Libérer: 2024-02-09 11:09:18
avant
1251 Les gens l'ont consulté

Golang 无法“sqlc 生成”

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.
Copier après la connexion
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.
Copier après la connexion

当我尝试 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'
Copier après la connexion

解决方法

我能够在全新安装的 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.
Copier après la connexion

有趣的是,在 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
Copier après la connexion

完成此操作后,sqlc 起作用了(成功为 6-createfeed 示例生成了 go 文件,没有问题)。

注意:由于这有效,我想我应该为任何类似的 sqlc 问题添加评论 a> 并遇到此评论建议相同的基本解决方案(我昨晚看的时候没有发现这一点)。

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal