diff --git a/backend/pkg/store/entdb.go b/backend/pkg/store/entdb.go index cead629..989db14 100644 --- a/backend/pkg/store/entdb.go +++ b/backend/pkg/store/entdb.go @@ -41,11 +41,32 @@ func NewEntDB(cfg *config.Config, logger *slog.Logger) (*db.Client, error) { return c, nil } +func RecoverMigrate16(m *migrate.Migrate, logger *slog.Logger) { + logger = logger.With("fn", "RecoverMigrate16") + logger.Info("recover migrate 16") + version, dirty, err := m.Version() + if err != nil { + logger.With("err", err).Error("get version failed") + return + } + + logger.With("version", version, "dirty", dirty).Info("get schema_migrations") + if version == 16 && dirty { + if err := m.Force(15); err != nil { + logger.With("err", err).Error("force migrate 15 failed") + return + } + } + + logger.Info("recover migrate 16 success") +} + func MigrateSQL(cfg *config.Config, logger *slog.Logger) error { db, err := dql.Open("postgres", cfg.Database.Master) if err != nil { return err } + driver, err := postgres.WithInstance(db, &postgres.Config{}) if err != nil { return err @@ -56,6 +77,7 @@ func MigrateSQL(cfg *config.Config, logger *slog.Logger) error { if err != nil { return err } + RecoverMigrate16(m, logger) if err := m.Up(); err != nil { logger.With("component", "db").With("err", err).Warn("migrate db failed") } diff --git a/backend/pro b/backend/pro index 25b9d64..d31a906 160000 --- a/backend/pro +++ b/backend/pro @@ -1 +1 @@ -Subproject commit 25b9d64efe8a4c5e4aa53de959e831dee52bcb80 +Subproject commit d31a906d45eec449e3b2c7bb00ba1bc1ac2b1ee1