hasura/graphql-engine · error

error while retrieving migration status %w

Error message

error while retrieving migration status %w

What it means

Thrown when the migrations driver cannot fetch current migration status from the server and disk while processing `hasura migrate delete`. GetStatus aggregates applied migrations from the server and present migrations from the project directory.

Source

Thrown at cli/commands/migrate_delete.go:168

		return errors.E(op, err)
	}

	return nil
}

func (o *MigrateDeleteOptions) RunOnSource() error {
	var op errors.Op = "commands.MigrateDeleteOptions.RunOnSource"

	o.EC.Spin("Deleting migration...")

	migrateDrv, err := migrate.NewMigrate(o.EC, true, o.Source.Name, o.Source.Kind)
	if err != nil {
		return errors.E(op, fmt.Errorf("error in creation of new migrate instance %w", err))
	}

	status, err := migrateDrv.GetStatus()
	if err != nil {
		return errors.E(op, fmt.Errorf("error while retrieving migration status %w", err))
	}

	// sourceVersions migration versions in source to be deleted similarly with serverVersions
	var sourceVersions, serverVersions []uint64

	if !o.All {
		// if o.version isn't present on source and on server return error version isn't present.
		if _, ok := status.Migrations[o.Version]; !ok {
			return errors.E(op, fmt.Errorf("version %v not found", o.Version))
		}

		sourceVersions = []uint64{o.Version}
		serverVersions = []uint64{o.Version}
	} else if o.All {
		for k, v := range status.Migrations {
			if v.IsApplied {
				serverVersions = append(serverVersions, k)
			}

View on GitHub (pinned to 724551b9ae)

Solutions

  1. Re-run `hasura migrate status` to see the raw inconsistency
  2. Check network/admin secret (retry after connectivity issues)
  3. Verify the migrations directory is readable
  4. Inspect hdb_migrations on the database for corruption
Defensive patterns

Strategy: retry

Validate before calling

hasura migrate status --database-name <db>

Try / catch

// transient network errors: retry once after backoff
if err := migrateDrv.GetStatus(); err != nil { time.Sleep(2*time.Second); err = migrateDrv.GetStatus() }

Prevention

When it happens

Trigger: Server API error when listing applied migrations, inconsistent/corrupt hdb_catalog.hdb_migrations table, or unreadable migrations directory.

Common situations: Server restarted mid-operation, lost connection, manually tampered migrations table, permissions on the migrations directory.

Related errors


AI-assisted analysis of hasura/graphql-engine@724551b9ae (2026-08-28). Data as JSON: /api/errors/07683cb3d7a39501. Report an issue: GitHub.