{"record":{"id":"bd239724f1c1579e","repo":"hasura/graphql-engine","slug":"cannot-export-s-from-metadata-w","errorCode":null,"errorMessage":"cannot export %s from metadata: %w","messagePattern":"cannot export (.+?) from metadata: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cli/internal/projectmetadata/handler.go","lineNumber":118,"sourceCode":"\t// So we directly translate JSON to YAML, to preserve it.\n\tyamlmdbs, err := metadatautil.JSONToYAML(jsonmdbs)\n\tif err != nil {\n\t\treturn nil, internalerrors.E(op, err)\n\t}\n\n\tvar c map[string]yaml.Node\n\n\terr = yaml.NewDecoder(bytes.NewReader(yamlmdbs)).Decode(&c)\n\tif err != nil {\n\t\treturn nil, internalerrors.E(op, err)\n\t}\n\n\tfor _, object := range h.objects {\n\t\tfiles, err := object.Export(c)\n\t\tif err != nil {\n\t\t\treturn nil, internalerrors.E(\n\t\t\t\top,\n\t\t\t\tfmt.Errorf(\"cannot export %s from metadata: %w\", object.Key(), err),\n\t\t\t)\n\t\t}\n\n\t\tmaps.Copy(metadataFiles, files)\n\t}\n\n\treturn metadataFiles, nil\n}\n\nfunc (h *Handler) ResetMetadata() error {\n\tvar (\n\t\top  internalerrors.Op = \"projectmetadata.Handler.ResetMetadata\"\n\t\terr error\n\t)\n\n\t_, err = h.v1MetadataOps.ClearMetadata()\n\tif err != nil {\n\t\treturn internalerrors.E(op, err)","sourceCodeStart":100,"sourceCodeEnd":136,"githubUrl":"https://github.com/hasura/graphql-engine/blob/724551b9ae87845594ef0408cff0e50eb6c90dc5/cli/internal/projectmetadata/handler.go#L100-L136","documentation":"Thrown by projectmetadata ExportMetadata when one of the registered metadata objects fails to serialize itself into files. The %s is the metadata object's Key() (e.g. metadata, query_collections, remote_schemas) and %w the underlying export error — typically a JSON marshal failure or an invalid metadata structure for that subsystem.","triggerScenarios":"Calling ExportMetadata against server metadata where one subsystem's configuration contains values that cannot be marshaled/exported — e.g. non-serializable fields, unsupported metadata kinds introduced by a newer server than the CLI knows, or malformed JSON in raw metadata.","commonSituations":"CLI version older than the server, so newer metadata kinds fail to export; manually injected raw metadata containing invalid entries; partially corrupted metadata on the server.","solutions":["Upgrade the CLI to match or exceed the Hasura server version (hasura update-cli / npm upgrade)","Inspect the object key in the message and the wrapped error to identify which subsystem's metadata is malformed, then fix or remove that entry in metadata","Fetch raw metadata (hasura metadata export --o yaml on server, or the /v1/metadata endpoint) and validate its structure against your server version"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"files, err := handler.ExportMetadata(ec)\nif err != nil {\n\tif strings.Contains(err.Error(), \"cannot export\") {\n\t\t// log the object key, suggest CLI/server version alignment\n\t\treturn fmt.Errorf(\"export failed (align CLI with server version?): %w\", err)\n\t}\n\treturn err\n}","preventionTips":["Pin CLI version to match your Hasura server version","Keep metadata edits within documented fields for your server version"],"tags":["go","metadata","export","serialization","hasura-cli"],"backgroundTag":"metadata-export-failed","analyzedSha":"724551b9ae87845594ef0408cff0e50eb6c90dc5","analyzedAt":"2026-08-28T07:32:55.105Z","schemaVersion":2},"datasetVersion":"2026-08-28T11:17:15.048Z"}