使用Makefile执行golang-migrate时出现postgresql驱动未知错误求助
问题原因及解决办法
这个错误是因为本地安装的migrate CLI工具没有包含PostgreSQL驱动支持。golang-migrate的默认安装包不会自动集成所有数据库驱动,必须在安装时通过build tags指定要包含的驱动。
解决步骤
1. 重新安装带PostgreSQL驱动的migrate工具
先卸载已安装的migrate(如果之前装过),然后执行以下命令安装包含PostgreSQL驱动的版本:
go install -tags 'postgres' github.com/golang-migrate/migrate/v4/cmd/migrate@latest
安装完成后,再重新运行make migrateup即可。
2. 替代方案:使用Docker镜像执行迁移
如果不想本地安装带驱动的migrate,可以直接使用官方提供的migrate Docker镜像,修改Makefile中的migrateup和migratedown命令:
migrateup: docker run --rm -v $(PWD)/database/postgres/migrations:/migrations migrate/migrate -path /migrations -database "$(DB_URL)" -verbose up migratedown: docker run --rm -v $(PWD)/database/postgres/migrations:/migrations migrate/migrate -path /migrations -database "$(DB_URL)" -verbose down
这个镜像已经预安装了所有主流数据库驱动,无需额外配置。
3. 额外检查:确认DB_URL协议正确性
虽然不是本次报错的直接原因,但可以确认下DB_URL的协议头,golang-migrate同时支持postgresql://和postgres://两种格式,两种都可以正常使用,无需修改。
内容的提问来源于stack exchange,提问作者David Essien
相关产品推荐
相关产品推荐

