{"record":{"id":"74e4ae7358c208df","repo":"semaphoreui/semaphore","slug":"boltdb-is-not-supported-starting-from-version-2-19","errorCode":null,"errorMessage":"BoltDB is not supported starting from version 2.19","messagePattern":"BoltDB is not supported starting from version 2\\.19","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cli/setup/setup.go","lineNumber":97,"sourceCode":"func InteractiveSetup(conf *util.ConfigType) {\n\tfmt.Print(interactiveSetupBlurb)\n\n\tdbPrompt := `What database to use:\n   1 - MySQL\n   2 - BoltDB (NOT SUPPORTED)\n   3 - PostgreSQL\n   4 - SQLite\n`\n\n\tvar db int\n\taskValue(dbPrompt, \"1\", &db)\n\n\tswitch db {\n\tcase 1:\n\t\tconf.Dialect = util.DbDriverMySQL\n\t\tscanMySQL(conf)\n\tcase 2:\n\t\tpanic(\"BoltDB is not supported starting from version 2.19\")\n\tcase 3:\n\t\tconf.Dialect = util.DbDriverPostgres\n\t\tscanPostgres(conf)\n\tcase 4:\n\t\tconf.Dialect = util.DbDriverSQLite\n\t\tscanSQLite(conf)\n\tdefault:\n\t\tpanic(\"Unsupported database dialect\")\n\t}\n\n\tdefaultPlaybookPath := filepath.Join(os.TempDir(), \"semaphore\")\n\taskValue(\"Playbook path\", defaultPlaybookPath, &conf.TmpPath)\n\tconf.TmpPath = filepath.Clean(conf.TmpPath)\n\n\taskValue(\"Public URL (optional, example: https://example.com/semaphore)\", \"\", &conf.WebHost)\n\n\taskConfirmation(\"Enable email alerts?\", false, &conf.EmailAlert)\n\tif conf.EmailAlert {","sourceCodeStart":79,"sourceCodeEnd":115,"githubUrl":"https://github.com/semaphoreui/semaphore/blob/1774ccb71a0a8b82eb74ea24c23ac9ab713de2fa/cli/setup/setup.go#L79-L115","documentation":"During interactive setup (`semaphore setup`), choosing option 2 (BoltDB) hits an intentional `panic`. BoltDB support was removed in Semaphore 2.19; the prompt still lists it marked NOT SUPPORTED so users migrating from old configs discover the removal explicitly rather than silently creating a broken config.","triggerScenarios":"Answering `2` at the \"What database to use\" prompt of `semaphore setup`.","commonSituations":"Operators following old documentation or muscle memory from pre-2.19 installs; scripted/automated setup piping a legacy answer of 2 into the prompt.","solutions":["Choose 1 (MySQL), 3 (PostgreSQL), or 4 (SQLite) instead of BoltDB.","If migrating old BoltDB data, export/upgrade via an intermediate Semaphore version that still supported BoltDB before 2.19.","For scripted setups, feed the new default (MySQL/PostgreSQL) answer instead of 2.","Store the database choice in the config file (`database.dialect`) to skip the interactive prompt entirely."],"exampleFix":"// before (interactive answer)\nWhat database to use: 2\n// after\nWhat database to use: 1  # MySQL (or 3 PostgreSQL / 4 SQLite)","handlingStrategy":"validation","validationCode":"// in automation, sanitize the answer before feeding stdin:\ncase \"$DB_CHOICE\" in\n  1|3|4) ;; # allowed\n  *) echo \"BoltDB unsupported; choose 1, 3, or 4\" >&2; exit 1 ;;\nesac","typeGuard":null,"tryCatchPattern":"// Go side: replace panic with a friendly error\nif db == 2 {\n    fmt.Fprintln(os.Stderr, \"BoltDB is not supported starting from version 2.19; choose MySQL, PostgreSQL, or SQLite\")\n    os.Exit(1)\n}","preventionTips":["Update old runbooks/scripts that still select BoltDB.","Prefer non-interactive setup via a config.json with database.dialect set.","Note the prompt still lists BoltDB as NOT SUPPORTED — never pick 2."],"tags":["cli","setup","boltdb","deprecated","database"],"backgroundTag":"unsupported-operation","analyzedSha":"1774ccb71a0a8b82eb74ea24c23ac9ab713de2fa","analyzedAt":"2026-09-07T11:00:33.293Z","contentChangedAt":"2026-09-07T11:00:33.293Z","schemaVersion":2},"datasetVersion":"2026-09-16T09:17:16.951Z"}