错误:数据库驱动程序:未知驱动程序 postgresql(忘记导入?) - 如何使用 make 文件运行 golang migrate

问题描述 投票:0回答:4

我正在尝试使用 golang-migrate 在我的 go-optical Rest API 中运行迁移。

我在 makefile 中添加了用于运行迁移的命令。但是,当我运行

make migrateup
时,出现以下错误:

migrate -path database/postgres/migrations -database "postgresql://postgres:postgres@localhost:5400/property?sslmode=disable" -verbose up
2022/11/10 18:00:17 error: database driver: unknown driver postgresql (forgotten import?)
make: *** [Makefile:15: migrateup] Error 1

这是我正在使用的make文件。

#### IMPORT ENV
include .env
DB_URL=postgresql://$(DB_USER):$(DB_PASSWORD)@$(DB_HOST):$(DB_PORT)/$(DB_NAME)?sslmode=disable

postgres:
    docker run --name postgres -p $(DB_PORT):5432 -e POSTGRES_USER=$(DB_USER) -e POSTGRES_PASSWORD=$(DB_PASSWORD) -d postgres:alpine

createdb:
    docker exec -it postgres createdb --username=$(DB_USER) --owner=$(DB_OWNER) $(DB_NAME)

dropdb:
    docker exec -it postgres dropdb --username=$(DB_USER) $(DB_NAME)

migrateup:
    migrate -path database/postgres/migrations -database "$(DB_URL)" -verbose up

migratedown:
    migrate -path database/postgres/migrations -database $(DB_URL) -verbose down

.PHONY: postgres createdb dropdb

请谁能帮我理解为什么这不起作用?

postgresql go database-migration golang-migrate
4个回答
0
投票

您需要安装带有特殊标签的 golang-migrate 才能支持特定驱动程序。

命令行工具的文档中写道:https://github.com/golang-migrate/migrate/tree/master/cmd/migrate#with-go-toolchain


0
投票

通过卸载 golang migrate 并重新安装解决了此问题。之后就成功了。


0
投票

首先安装驱动程序数据库。

数据库迁移

go install -tags "postgres,mysql" github.com/golang-migrate/migrate/v4/cmd/migrate@latest

我使用代码makefile

table = $(table)
name = $(name)
url=postgres://postgres:[email protected]:5432/school?sslmode=disable
version=$(version)
migration-up :
    migrate -database "$(url)" -path ./migrations/ up $(version)
    
migration-down :
    migrate -database "$(url)" -path ./migrations/ down $(version)
    
migration-create:
    migrate create -ext sql -dir ./migrations/ -seq $(name)

migration-force:
    migrate -database "$(url)" -path ./migrations/ force $(version)

migration-version:
    migrate -database "$(url)" -path ./migrations/ version

make migration-create name=users
创建文件迁移

make migration-up version=1
运行迁移直至运行文件sql


0
投票

您需要安装Postgres驱动程序。为此,您需要使用标签“postgres”安装 golang migrate。之后一切都应该有效:)

go install -tags 'postgres' github.com/golang-migrate/migrate/v4/cmd/migrate@latest

© www.soinside.com 2019 - 2024. All rights reserved.