登录
首页 >  Golang >  Go问答

使用 gomigrate 包为嵌入文件 (go:embed) 进行迁移

来源:stackoverflow

时间:2024-02-20 19:30:31 237浏览 收藏

Golang不知道大家是否熟悉?今天我将给大家介绍《使用 gomigrate 包为嵌入文件 (go:embed) 进行迁移》,这篇文章主要会讲到等等知识点,如果你在看完本篇文章后,有更好的建议或者发现哪里有问题,希望大家都能积极评论指出,谢谢!希望我们能一起加油进步!

问题内容

我希望能够将迁移文件嵌入到输出二进制文件中。

这样我就可以将这些文件作为变量获取,然后使用它们来调用迁移函数。

我使用的包是github.com/davidhuie/gomigrate

下面的代码从名为 ./migrations 的文件夹中读取,其中包含文件 1_add_users_table_up.sql 以及 _down.sql

我想使用 go:embed 嵌入它们,并将它们作为文件直接在函数中使用。

func MigrateUp(db *sqlx.DB) error {
    migrator, _ := gomigrate.NewMigrator(db.DB, gomigrate.Postgres{}, "./migrations")

    err := migrator.Migrate()
    if err != nil {
        return err
    }

    return nil
}

编辑:

我最终使用了 github.com/golang-migrate/migrate 包,因为它提供了嵌入迁移文件的功能。


正确答案


我正在使用 the example 的 iofs 驱动程序:

import "github.com/golang-migrate/migrate/v4/source/iofs"

//go:embed migrations
var migrations embed.FS

source, err := iofs.New(migrations, "migrations")
m, err := migrate.NewWithInstance("iofs", source, "postgres", db)

好了,本文到此结束,带大家了解了《使用 gomigrate 包为嵌入文件 (go:embed) 进行迁移》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>