diff --git a/chmigrate/migrator.go b/chmigrate/migrator.go index af75620..f2e9c7d 100644 --- a/chmigrate/migrator.go +++ b/chmigrate/migrator.go @@ -186,15 +186,16 @@ func (m *Migrator) Rollback(ctx context.Context, opts ...MigrationOption) (*Migr for i := len(lastGroup.Migrations) - 1; i >= 0; i-- { migration := &lastGroup.Migrations[i] + // Always mark migration as unapplied to match migrate behavior. + if err := m.MarkUnapplied(ctx, migration); err != nil { + return nil, err + } + if !cfg.nop && migration.Down != nil { if err := migration.Down(ctx, m.db); err != nil { return nil, err } } - - if err := m.MarkUnapplied(ctx, migration); err != nil { - return nil, err - } } return lastGroup, nil