open /bin/migrate: 构建 Go 标签时不允许操作

open /bin/migrate: operation not permitted when building Go tags

我正在学习这个 Go + GraphQL 教程 https://www.howtographql.com/graphql-go/4-database/,但我在尝试安装然后 运行 迁移时卡住了。

整个命令链是

go get -u github.com/go-sql-driver/mysql
go build -tags 'mysql' -ldflags="-X main.Version=1.0.0" -o $GOPATH/bin/migrate github.com/golang-migrate/migrate/v4/cmd/migrate/
cd internal/pkg/db/migrations/
migrate create -ext sql -dir mysql -seq create_users_table
migrate create -ext sql -dir mysql -seq create_links_table

但具体在

go build -tags 'mysql' -ldflags="-X main.Version=1.0.0" -o $GOPATH/bin/migrate github.com/golang-migrate/migrate/v4/cmd/migrate/
cd internal/pkg/db/migrations/

我的终端会出现以下错误:

go build github.com/golang-migrate/migrate/v4/cmd/migrate: copying /var/folders/f9/d6pn7fz92w53vcpywqd_08zm0000gp/T/go-build1656176552/b001/exe/a.out: open /bin/migrate: operation not permitted

如何解决?

$GOPATH 未设置(这很好,go 将回退到默认值)。

这导致 $GOPATH/bin/migrate 评估为 /bin/migrate 而不是其预期值 - 类似于 /home/you/go/bin/migrate(其中 /home/you/go 默认为 $GOPATH)。

$GOPATH未设置的情况下使用默认值;您的 go build 命令应该调用 $(go env GOPATH) 而不是直接使用 $GOPATH

go build -tags 'mysql' -ldflags="-X main.Version=1.0.0" -o $(go env GOPATH)/bin/migrate github.com/golang-migrate/migrate/v4/cmd/migrate/

该教程只是错误地假设 $GOPATH 环境变量始终已设置。