golang - не удается найти драйвер postgres - PullRequest
0 голосов
/ 28 марта 2020

В моем internal/platform/database/database.go


import (
    "github.com/golang-migrate/migrate"
    "github.com/jmoiron/sqlx"
    _ "github.com/lib/pq"
)

func RunMigrations() error {
    m, err := migrate.New(
        "file://schema",
        "postgres://postgres:postgres@localhost:5432/postgres?sslmode=disable")
    if err != nil {
        return errors.Wrap(err, "error creating migrations object")
    }

Эта функция вызывается из моего cmd/my-api/main.go следующим образом:


import (
    _ "github.com/golang-migrate/migrate/v4/database/postgres"
    _ "github.com/golang-migrate/migrate/v4/source/file"
    "github.com/jmoiron/sqlx"
    _ "github.com/lib/pq"
    "github.com/myrepo/myproject/internal/platform/database"
)

    // =========================================================================
    // Executing migrations
    if err := database.RunMigrations(); err != nil {
        log.Fatal(err)
    }

Хотя я импортирую postgres драйвер в оба файла, _ "github.com/lib/pq"

, работающие с программой, завершаются неудачно следующим образом:

error creating migrations object: source driver: unknown driver file (forgotten import?)
exit status 1

Почему это так?

Ответы [ 2 ]

0 голосов
/ 01 апреля 2020

При импорте следующего запускается функция инициализации драйвера postgres, и эта функция регистрирует драйвер postgres.

_ "github.com/golang-migrate/migrate/v4/database/postgres"

Вы можете проверить это. https://www.calhoun.io/why-we-import-sql-drivers-with-the-blank-identifier/

0 голосов
/ 28 марта 2020

Кажется, что golang-migrate нужна собственная версия соответствующего драйвера (?)

Следующий импорт решил ее для меня

_ "github.com/golang-migrate/migrate/v4/database/postgres"
...