postgresql - 源驱动程序:未知驱动程序 postgres(忘记导入?)即使正在导入 lib/pq
问题描述
已经有几个答案,但他们似乎告诉我做我已经在做的事情,并且不要更深入地研究问题可能是什么。
一点侦察。我试图让我的 Go 应用程序在启动时运行数据库迁移。我有一个在 docker 容器中运行的 Postgres 数据库。我可以使用我的数据库工具连接到它。我可以使用命令行从其位置运行迁移文件。但是,如果我按原样运行我的服务,我会得到:
source driver: unknown driver postgres (forgotten import?)
这是我的代码:
package main
import (
"database/sql"
"log"
"os"
"github.com/golang-migrate/migrate/v4"
_ "github.com/golang-migrate/migrate/v4/database/postgres"
_ "github.com/golang-migrate/migrate/v4/source/file"
_ "github.com/lib/pq"
"github.com/joho/godotenv"
)
func init() {
if err := godotenv.Load(".env"); err != nil {
log.Println("no .env file found")
}
}
func main() {
db_url := os.Getenv("POSTGRES_URL");
mig_url := os.Getenv("MIGRATION_URL")
MustMigrateUp(db_url, mig_url)
_, err := sql.Open("postgres", db_url)
if err != nil {
log.Fatal(err)
}
}
func MustMigrateUp(db_url, mig_url string) {
m, err := migrate.New(
db_url,
mig_url,
)
println(os.Getenv("POSTGRES_URL"))
if err != nil {
log.Fatalln(err)
}
if err := m.Up(); err != nil {
log.Fatalln(err)
}
}
我很感激任何反馈!
解决方案
migrate.New() 期望参数中的数据库 url 第二个。 https://godoc.org/github.com/golang-migrate/migrate#New
不要只在凌晨 3 点编码。
推荐阅读
- python - 如何使用 python_jwt 验证 firebase 令牌
- php - 在 PHPDoc 标准中键入提示水合对象
- java - springboot 忽略类路径中的 logback.xml
- python - 为下拉表发送带有指定值的 request.get
- swift - 快速为按钮组添加边框
- java - 如何从文本文件中读取前 3 个三位数?
- c++ - Interoperabilty between C and C++ atomics
- python - Python Tensor Flow Training-Value Error: Tensor must be from the same graph as Tensor
- spring-boot - 如何从组件访问头文件变量?
- android - 带有粘性标题和子标题的 Recyclerview