{"record":{"id":"167d7f95d9fc737e","repo":"cube-js/cube","slug":"wrong-driver","errorCode":null,"errorMessage":"Wrong driver","messagePattern":"Wrong driver","errorType":"http","errorClass":null,"httpStatus":400,"severity":"warning","filePath":"packages/cubejs-server-core/src/core/DevServer.ts","lineNumber":330,"sourceCode":"\n    app.get('/playground/dashboard-app-status', catchErrors(async (req, res) => {\n      this.cubejsServer.event('Dev Server Dashboard App Status');\n      const dashboardPort = this.dashboardAppProcess && await this.dashboardAppProcess.dashboardUrlPromise;\n      res.json({\n        running: !!dashboardPort,\n        dashboardPort,\n        dashboardAppPath: path.resolve(options.dashboardAppPath)\n      });\n    }));\n\n    let driverPromise: Promise<void> | null = null;\n    let driverError: Error | null = null;\n\n    app.get('/playground/driver', catchErrors(async (req: Request, res: Response) => {\n      const { driver } = req.query;\n\n      if (!driver || typeof driver !== 'string' || !DriverDependencies[driver as keyof typeof DriverDependencies]) {\n        return res.status(400).json('Wrong driver');\n      }\n\n      if (packageExists(DriverDependencies[driver as keyof typeof DriverDependencies])) {\n        return res.json({ status: 'installed' });\n      } else if (driverPromise) {\n        return res.json({ status: 'installing' });\n      } else if (driverError) {\n        return res.status(500).json({\n          status: 'error',\n          error: driverError.toString()\n        });\n      }\n\n      return res.json({ status: null });\n    }));\n\n    app.post('/playground/driver', catchErrors((req, res) => {\n      const { driver } = req.body;","sourceCodeStart":312,"sourceCodeEnd":348,"githubUrl":"https://github.com/cube-js/cube/blob/7d981676b36392fec34088b9afab6bdcad40207c/packages/cubejs-server-core/src/core/DevServer.ts#L312-L348","documentation":"The Dev Server's /playground/driver endpoint (packages/cubejs-server-core/src/core/DevServer.ts:330) validates the `driver` query parameter against the known DriverDependencies map. If it's missing, not a string, or not a recognized driver key, it responds 400 'Wrong driver'. It's used by the Playground to check/install database driver packages.","triggerScenarios":"GET /playground/driver with no `driver` param, a non-string param, or a key absent from DriverDependencies (e.g. a typo like 'postgress' or a driver removed in your server-core version).","commonSituations":"Hand-typing the Playground driver-install URL; a stale/older Playground frontend sending driver keys renamed or dropped by a newer cubejs-server-core; proxies stripping the query string.","solutions":["Use an exact supported driver key, e.g. /playground/driver?driver=postgres","Check spelling against the DriverDependencies map in your installed cubejs-server-core version","Update @cubejs-server-core and the Playground frontend together so driver keys match","If behind a proxy, verify the query string is forwarded intact"],"exampleFix":"// before\nGET /playground/driver?driver=postgress\n// after\nGET /playground/driver?driver=postgres","handlingStrategy":"validation","validationCode":"const SUPPORTED_DRIVERS = ['postgres','mysql','mariadb','clickhouse','bigquery','snowflake','duckdb','mssql','mongodb','elasticsearch','firehose','cubestore'];\nif (!SUPPORTED_DRIVERS.includes(driver)) throw new Error(`Unsupported driver: ${driver}`);","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Use the Playground UI instead of hand-crafted /playground/driver URLs","Keep @cubejs-server-core and Playground versions in sync so driver keys match","Validate driver names against the DriverDependencies map of your installed version"],"tags":["dev-server","playground","validation","http-400"],"backgroundTag":"invalid-driver-name","analyzedSha":"7d981676b36392fec34088b9afab6bdcad40207c","analyzedAt":"2026-09-02T03:45:10.400Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T15:18:49.778Z"}