golang-migrate 无法找到 postgres 驱动程序

pka*_*mol 6 postgresql go golang-migrate

在我的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")
    }
Run Code Online (Sandbox Code Playgroud)

该函数是从 my 调用的,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)
    }
Run Code Online (Sandbox Code Playgroud)

虽然我postgres两个文件中导入驱动程序,_ "github.com/lib/pq"

运行程序失败,如下:

error creating migrations object: source driver: unknown driver file (forgotten import?)
exit status 1
Run Code Online (Sandbox Code Playgroud)

这是为什么?

pka*_*mol 7

看来golang-migrate需要自己版本的对应驱动(?)

以下导入为我解决了这个问题

_ "github.com/golang-migrate/migrate/v4/database/postgres"
Run Code Online (Sandbox Code Playgroud)