使用 golang-migrate 时出现脏数据库版本错误
Dirty database version error when using golang-migrate
我是golang-migrate的新用户。
我 运行 成功执行了一些迁移。
我处于开发模式,所以我想重新运行 迁移,所以在 psql
shell 连接到我的数据库后,我执行了 drop database schema_migrations
现在的问题是,当我 运行 执行迁移的代码(如下所示)
func RunMigrations() {
m, err := migrate.New(
"file://db/migrations",
"postgres://postgres:postgres@localhost:5432/mydatabase?sslmode=disable")
if err != nil {
log.Fatal(err)
}
if err := m.Up(); err != nil {
if err.Error() == "no change" {
log.Println("no change made by migration scripts")
} else {
log.Fatal(err)
}
}
}
我收到这个错误
Dirty database version 2. Fix and force version.
这是什么错误,我该如何解决?
脏数据库版本 2 意味着您尝试 运行 迁移 v2 但失败了。
如果迁移失败,数据库可能会不一致或损坏。
重新运行在损坏的状态之上进行额外的迁移是不可预测的table,因此在您清理数据库之前迁移会被阻止。
https://github.com/golang-migrate/migrate/blob/master/FAQ.md#what-does-dirty-database-mean
What does "dirty" database mean?
Before a migration runs, each
database sets a dirty flag. Execution stops if a migration fails and
the dirty state persists, which prevents attempts to run more
migrations on top of a failed migration. You need to manually fix the
error and then "force" the expected version.
清理数据库后您还可以打开schema_migrations
table并将脏标志和回滚版本号更改为上次成功应用的迁移.
我是golang-migrate的新用户。
我 运行 成功执行了一些迁移。
我处于开发模式,所以我想重新运行 迁移,所以在 psql
shell 连接到我的数据库后,我执行了 drop database schema_migrations
现在的问题是,当我 运行 执行迁移的代码(如下所示)
func RunMigrations() {
m, err := migrate.New(
"file://db/migrations",
"postgres://postgres:postgres@localhost:5432/mydatabase?sslmode=disable")
if err != nil {
log.Fatal(err)
}
if err := m.Up(); err != nil {
if err.Error() == "no change" {
log.Println("no change made by migration scripts")
} else {
log.Fatal(err)
}
}
}
我收到这个错误
Dirty database version 2. Fix and force version.
这是什么错误,我该如何解决?
脏数据库版本 2 意味着您尝试 运行 迁移 v2 但失败了。
如果迁移失败,数据库可能会不一致或损坏。
重新运行在损坏的状态之上进行额外的迁移是不可预测的table,因此在您清理数据库之前迁移会被阻止。
https://github.com/golang-migrate/migrate/blob/master/FAQ.md#what-does-dirty-database-mean
What does "dirty" database mean?
Before a migration runs, each database sets a dirty flag. Execution stops if a migration fails and the dirty state persists, which prevents attempts to run more migrations on top of a failed migration. You need to manually fix the error and then "force" the expected version.
清理数据库后您还可以打开schema_migrations
table并将脏标志和回滚版本号更改为上次成功应用的迁移.