这个问题已经有几个答案了,但他们似乎告诉我去做我已经在做的事情,不要再深入研究这个问题了。
一个小小的侦察。我正在尝试让我的Go应用程序在启动时运行数据库迁移。我有一个在docker容器中运行的Postgres数据库。我可以使用我的db工具连接到它。我可以使用命令行从迁移文件的位置运行迁移文件。但是,如果我按原样运行我的服务,我会得到:
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)
}
}非常感谢您的反馈!
发布于 2020-05-28 17:56:03
migrate.New()期望DB url在参数中排在第二位。https://godoc.org/github.com/golang-migrate/migrate#New
不要只在凌晨三点才给孩子们编程。
https://stackoverflow.com/questions/62052881
复制相似问题