已经有几个答案,但他们似乎告诉我做我已经在做的事情,并且不要更深入地研究问题可能是什么。
一点侦察。我试图让我的 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)
}
}
我很感激任何反馈!
一只萌萌小番薯
动漫人物
随时随地看视频慕课网APP
相关分类