使用库进行数据库迁移

标签 database postgresql go migrate

我尝试使用下面的代码将数据库架构迁移到 POSTGRESQL 但它不起作用,它返回了一个错误

"source driver: unknown driver file (forgotten import?)"

使用 CLI 效果很好

Up.sqldown.sql 文件位于 dbMigration 文件夹

package main

import (
    "log"
    "github.com/golang-migrate/migrate"
)

func main() {
    mg, err := migrate.New(
        "file://dbMigration",
        "postgres://username:localhost:5432/databasename?sslmode=disable",
    )
    if err != nil {
        log.Fatal(err)
    }
    if err = mg.Up; err != nil {
        log.Fatal(err)
    }
}

最佳答案

如果在go中使用数据库包,通常需要单独导入驱动。

这也是错误试图告诉您的内容。

source driver: unknown driver file (forgotten import?)

在 golang-migrate 中,您可以从其存储库导入驱动程序。

import (
    "github.com/golang-migrate/migrate/v4"
    _ "github.com/golang-migrate/migrate/v4/database/postgres"
    _ "github.com/golang-migrate/migrate/v4/source/github"
)

这也记录在他们的 readme 中.

关于使用库进行数据库迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70821878/

相关文章:

mysql - 在数据库中存储距离矩阵

database - 将 Cassandra 集群部署到一组 Linode VPS 实例中是否有任何 "gotchas"?

php - 在 PostgreSQL 中生成顺序代码的最佳实践是什么

postgresql - 在postgresql中,如果已经有一条记录满足我的条件,如何用函数检查表,然后更新它或插入新的?

go - 从不同的包golang实现接口(interface)

mysql 得到一个 LIMIT 只计算左连接中的 1 个表

database - 海量的流量数据应该如何存储以便于检索?

postgresql - PostgreSQL 插入后输出的结果到底是什么意思?

go - 期待 nil 但得到一个 nil 值的接口(interface)作为返回,这应该是 nil

html - 如何在golang中获取<ul>的表单值?