使用文件(go:embed)与gomigrate包

huangapple go评论76阅读模式
英文:

Using files (go:embed) with gomigrate package

问题

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

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

我使用的包是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包,因为它提供了嵌入迁移文件的功能。

英文:

I want to be able to embed migration files within the output binary.

So that i can get those files as variables then use them to call the migrate functions.

The package I use is github.com/DavidHuie/gomigrate

The code below reads from the folder called ./migrations which includes a file 1_add_users_table_up.sql as well as a _down.sql.

I want to embed them using go:embed and use them directly in the function as a file.

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

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

	return nil
}

EDIT:

I ended up using the package github.com/golang-migrate/migrate instead since it provides embedding the migration files.

答案1

得分: 2

我正在使用来自示例的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)

请注意,这是一个示例代码片段,用于演示如何使用iofs驱动程序进行迁移。你需要根据自己的实际情况进行适当的修改和配置。

英文:

I'm using iofs driver from the example:

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)

huangapple
  • 本文由 发表于 2021年8月13日 06:00:47
  • 转载请务必保留本文链接:https://go.coder-hub.com/68764623.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定