英文:
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)
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论