{"record":{"id":"ddc7a569ced6c66f","repo":"hasura/graphql-engine","slug":"please-upgrade-your-project-to-a-newer-version-us","errorCode":null,"errorMessage":"please upgrade your project to a newer version.\nuse hasura scripts update-project-v2 to upgrade your project to config v2","messagePattern":"please upgrade your project to a newer version\\.\nuse hasura scripts update-project-v2 to upgrade your project to config v2","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cli/internal/scripts/update-project-v3.go","lineNumber":450,"sourceCode":"\t}\n\n\tcliState.IsStateCopyCompleted = true\n\tif _, err := statestore.NewCLICatalogState(ec.APIClient.V1Metadata).Set(*cliState); err != nil {\n\t\treturn errors.E(op, fmt.Errorf(\"cannot set catalog state: %w\", err))\n\t}\n\n\treturn nil\n}\n\nfunc CheckIfUpdateToConfigV3IsRequired(ec *cli.ExecutionContext) error {\n\tvar op errors.Op = \"scripts.CheckIfUpdateToConfigV3IsRequired\"\n\t// see if an update to config V3 is necessary\n\tif ec.Config.Version <= cli.V1 && ec.HasMetadataV3 {\n\t\tec.Logger.Info(\"config v1 is deprecated from v1.4\")\n\n\t\treturn errors.E(\n\t\t\top,\n\t\t\tfmt.Errorf(\n\t\t\t\t\"%s\",\n\t\t\t\t\"please upgrade your project to a newer version.\\nuse \"+color.New(color.FgCyan).\n\t\t\t\t\tSprintFunc()(\n\t\t\t\t\t\"hasura scripts update-project-v2\",\n\t\t\t\t)+\" to upgrade your project to config v2\",\n\t\t\t),\n\t\t)\n\t}\n\n\tif ec.Config.Version < cli.V3 && ec.HasMetadataV3 {\n\t\tsources, err := metadatautil.GetSources(ec.APIClient.V1Metadata.ExportMetadata)\n\t\tif err != nil {\n\t\t\treturn errors.E(op, err)\n\t\t}\n\n\t\tupgrade := func() error {\n\t\t\tec.Logger.Info(\n\t\t\t\t\"Looks like you are trying to use hasura with multiple databases, which requires some changes on your project directory\\n\",","sourceCodeStart":432,"sourceCodeEnd":468,"githubUrl":"https://github.com/hasura/graphql-engine/blob/724551b9ae87845594ef0408cff0e50eb6c90dc5/cli/internal/scripts/update-project-v3.go#L432-L468","documentation":"CheckIfUpdateToConfigV3IsRequired rejects the operation because the project still uses config version 1 while metadata v3 files are present. Since config v1 is deprecated (from Hasura v1.4), the CLI tells you to first run `hasura scripts update-project-v2`.","triggerScenarios":"Running a v3-era command (e.g. `hasura scripts update-project-v3` or a command calling validateConfigV3Prechecks) on a project whose config.yaml has version: 1 (or no version) and HasMetadataV3 is true.","commonSituations":"Very old projects created with Hasura < v1.0 being upgraded directly to a modern CLI, skipping the intermediate v2 upgrade step.","solutions":["Run `hasura scripts update-project-v2` first to convert config.yaml to version 2","Then run `hasura scripts update-project-v3` to finish the migration","Alternatively start a fresh project and port metadata/migrations manually"],"exampleFix":"# before\nhasura scripts update-project-v3\n# error: please upgrade your project to a newer version...\n\n# after\nhasura scripts update-project-v2\nhasura scripts update-project-v3","handlingStrategy":"validation","validationCode":"if ec.Config.Version <= cli.V1 {\n    return fmt.Errorf(\"run `hasura scripts update-project-v2` first\")\n}","typeGuard":"func isConfigV2Plus(v cli.ConfigVersion) bool { return v >= cli.V2 }","tryCatchPattern":"if err := scripts.CheckIfUpdateToConfigV3IsRequired(ec); err != nil {\n    // surface upgrade-path instruction to the user, run update-project-v2 then retry\n}","preventionTips":["Upgrade configs stepwise v1 -> v2 -> v3","Check config.yaml version field before scripting upgrades"],"tags":["config-version","deprecated","upgrade-path","hasura-cli"],"backgroundTag":"config-version-unsupported","analyzedSha":"724551b9ae87845594ef0408cff0e50eb6c90dc5","analyzedAt":"2026-08-28T07:32:55.105Z","schemaVersion":2},"datasetVersion":"2026-08-28T11:17:15.048Z"}