{"record":{"id":"87d17b5f13292e1b","repo":"gastownhall/beads","slug":"storage-backend-q-is-no-longer-supported-s-the","errorCode":null,"errorMessage":"storage backend %q is no longer supported: %s; the supported backend is \"dolt\" (default)","messagePattern":"storage backend %q is no longer supported: (.+?); the supported backend is \"dolt\" \\(default\\)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cmd/bd/init.go","lineNumber":538,"sourceCode":"\t\t\t\tTLSRequired:     externalTLS,\n\t\t\t\tTLSCACert:       externalTLSCACertPath,\n\t\t\t\tTLSCert:         externalTLSCertPath,\n\t\t\t\tTLSKey:          externalTLSKeyPath,\n\t\t\t\tTLSServerName:   externalTLSServerName,\n\t\t\t\tTLSSkipVerify:   externalTLSSkipVerify,\n\t\t\t\tKeepAlivePeriod: externalKeepAlive,\n\t\t\t}\n\t\t\tif err := cfg.Validate(); err != nil {\n\t\t\t\treturn fmt.Errorf(\"--proxied-server-external-*: %v\", err)\n\t\t\t}\n\t\t\texternalConfig = &cfg\n\t\t}\n\n\t\t// Backend selection: Dolt is the only supported backend.\n\t\tif !configfile.IsSupportedBackend(backendFlag) {\n\t\t\tswitch backendFlag {\n\t\t\tcase configfile.BackendPostgres, configfile.BackendMySQL:\n\t\t\t\treturn fmt.Errorf(\"storage backend %q is no longer supported: %s; the supported backend is \\\"dolt\\\" (default)\", backendFlag, configfile.RemovedBackendRationale)\n\t\t\tcase configfile.BackendSQLite:\n\t\t\t\treturn fmt.Errorf(\"storage backend %q is no longer supported: %s; the supported backend is \\\"dolt\\\" (default)\", backendFlag, configfile.RemovedSQLiteRationale)\n\t\t\t}\n\t\t\treturn fmt.Errorf(\"unknown backend %q: the supported backend is \\\"dolt\\\" (default)\", backendFlag)\n\t\t}\n\t\t// A registered extension backend passes IsSupportedBackend so its\n\t\t// existing workspaces can be opened, but init provisions Dolt only and\n\t\t// would otherwise create the workspace and persist backend: dolt. Reject\n\t\t// it here rather than silently creating the wrong workspace; downstream\n\t\t// registrants supply their own workspace-creation path.\n\t\tif backends.Registered(backendFlag) {\n\t\t\treturn fmt.Errorf(\"backend %q cannot be created by bd init; it can only open an existing workspace (bd init provisions \\\"dolt\\\", the default)\", backendFlag)\n\t\t}\n\t\tfor _, legacyFlag := range removedBackendInitFlags {\n\t\t\tif cmd.Flags().Changed(legacyFlag.name) {\n\t\t\t\treturn fmt.Errorf(\"--%s belonged to %s: %s; use --backend=dolt (the default)\", legacyFlag.name, legacyFlag.origin, legacyFlag.rationale)\n\t\t\t}\n\t\t}","sourceCodeStart":520,"sourceCodeEnd":556,"githubUrl":"https://github.com/gastownhall/beads/blob/71377f276968b452ee607177637970a4ff888584/cmd/bd/init.go#L520-L556","documentation":"Thrown when `bd init --backend` is set to postgres or mysql. These backends were removed; init only provisions dolt. The message embeds configfile.RemovedBackendRationale explaining why the backend was removed and redirects to dolt.","triggerScenarios":"`bd init --backend=postgres` or `bd init --backend=mysql` (values matching configfile.BackendPostgres / BackendMySQL), which fail configfile.IsSupportedBackend.","commonSituations":"Scripts or CI pipelines written when postgres/mysql were supported; users upgrading from older beads versions following stale docs.","solutions":["Drop the --backend flag and use the default dolt backend","Explicitly pass --backend=dolt","Update scripts/docs that still reference postgres/mysql","Read configfile.RemovedBackendRationale for the removal rationale"],"exampleFix":"// before\nbd init --backend=postgres\n// after\nbd init --backend=dolt   # or just: bd init","handlingStrategy":"validation","validationCode":"case \"$BACKEND\" in\n  postgres|mysql) echo \"$BACKEND removed; use dolt\"; exit 1 ;;\nesac","typeGuard":null,"tryCatchPattern":"if err := bdInit(\"--backend=postgres\"); err != nil {\n    // migrate to: bd init --backend=dolt\n}","preventionTips":["Remove --backend=postgres/mysql from scripts and CI configs","Omit --backend entirely; dolt is the default","Pin beads version and read release notes for backend removals"],"tags":["cli","backend","init","removed-feature"],"backgroundTag":"unsupported-backend","analyzedSha":"71377f276968b452ee607177637970a4ff888584","analyzedAt":"2026-08-30T18:55:39.744Z","schemaVersion":2},"datasetVersion":"2026-08-30T23:17:21.991Z"}