На это уже есть пара ответов, но они, похоже, говорят мне делать то, что я уже делаю, и не go более подробно разбираться в том, в чем может быть проблема.
Маленькая разведка. Я пытаюсь заставить мое приложение Go запустить миграцию базы данных при запуске. У меня есть база данных Postgres, работающая в контейнере docker. Я могу подключиться к нему с помощью моих инструментов 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)
}
}
Я ценю любые отзывы!