hasura/graphql-engine · error
cannot export metadata from server: %w
Error message
cannot export metadata from server: %w
What it means
During the v2 upgrade the CLI exports metadata from the running server via projectmetadata.NewHandlerFromEC(ec).ExportMetadata(). This fails when the server API call errors: bad endpoint, auth failure, or server unable to reach its own metadata database.
Source
Thrown at cli/commands/scripts_update_config_v2.go:447
}
defer func() {
if err != nil {
os.RemoveAll(ec.MetadataDir)
}
}()
// set codegen to nil, so that it is not exported in yaml
ec.Config.ActionConfig.Codegen = nil
// run metadata export
ec.Spin("Exporting metadata...")
var files map[string][]byte
mdHandler := projectmetadata.NewHandlerFromEC(ec)
files, err = mdHandler.ExportMetadata()
if err != nil {
return errors.E(op, fmt.Errorf("cannot export metadata from server: %w", err))
}
ec.Spin("Writing metadata...")
err = mdHandler.WriteMetadata(files)
if err != nil {
return errors.E(op, fmt.Errorf("cannot write metadata: %w", err))
}
ec.Spin("Writing new config file...")
// Read the config from config.yaml
cfgByt, err := os.ReadFile(ec.ConfigFile)
if err != nil {
return errors.E(op, fmt.Errorf("cannot read config file: %w", err))
}
var cfg cli.Config
View on GitHub (pinned to 724551b9ae)
Solutions
- Confirm the server is up: curl $ENDPOINT/healthz
- Pass the correct --endpoint and --admin-secret
- Restart the Hasura server if its metadata DB is unhealthy
- Re-run the update command once export succeeds manually via metadata API
Defensive patterns
Strategy: try-catch
Validate before calling
// verify server reachable and authed before export
resp, err := http.Get(endpoint + "/healthz")
if err != nil || resp.StatusCode != 200 { log.Fatal("server not ready") } Try / catch
if err := cmd.Execute(); err != nil {
if strings.Contains(err.Error(), "cannot export metadata from server") {
// check endpoint/admin-secret, restart server, retry
}
} Prevention
- Health-check the server before running the upgrade script
- Pass --admin-secret explicitly rather than relying on env
- Keep server and CLI versions compatible
When it happens
Trigger: update-project-v2 with --endpoint pointing to a dead/unreachable server, wrong --admin-secret, TLS mismatch, or a Hasura server whose metadata DB is down.
Common situations: Server container stopped before the CLI step; admin secret rotated; self-signed cert without --insecure-skip-verify; server version too old to answer the export query.
Related errors
- exporting metadata from server: %w
- unable to fetch introspection schema: %w
- error in fetching introspection schema: %w
- got error while getting the sources list : %w
- got error while getting the sources list : %w
AI-assisted analysis of hasura/graphql-engine@724551b9ae (2026-08-28).
Data as JSON: /api/errors/34ce6e6fee957469.
Report an issue: GitHub.