{"record":{"id":"fa06e13d03c6d9e7","repo":"remix-run/remix","slug":"postgres-database-config-requires-a-database-name","errorCode":null,"errorMessage":"Postgres database config requires a database name","messagePattern":"Postgres database config requires a database name","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/data-table-postgres/src/lib/driver.ts","lineNumber":512,"sourceCode":"  return typeof value === 'object' && value !== null && 'query' in value\n}\n\nfunction isPostgresPool(client: PostgresQueryable): client is PostgresPool {\n  if (client instanceof pg.Client) {\n    return false\n  }\n\n  return 'connect' in client && typeof client.connect === 'function' && !('release' in client)\n}\n\nfunction resolvePostgresDatabaseName(config: PostgresPoolConfig): string {\n  let database =\n    resolveDatabaseNameFromConnectionString(config?.connectionString) ??\n    config?.database ??\n    process.env.PGDATABASE\n\n  if (!database) {\n    throw new Error('Postgres database config requires a database name')\n  }\n\n  return database\n}\n\nfunction replaceDatabaseInConnectionString(\n  connectionString: string | undefined,\n  database: string,\n): string | undefined {\n  if (!connectionString) {\n    return undefined\n  }\n\n  let url: URL\n\n  try {\n    url = new URL(connectionString)\n  } catch (cause) {","sourceCodeStart":494,"sourceCodeEnd":530,"githubUrl":"https://github.com/remix-run/remix/blob/9696913134be3a4423513d2775f7b31d6917c049/packages/data-table-postgres/src/lib/driver.ts#L494-L530","documentation":"resolvePostgresDatabaseName tries config.connectionString, config.database, then PGDATABASE to determine which database to target. If none is set it throws, because operations like maintenance-connection setup cannot proceed without a database name.","triggerScenarios":"Constructing the driver with a config that has neither `database` nor `connectionString`, while PGDATABASE is unset in the environment; CI containers where PGDATABASE isn't exported; .env file not loaded in the process calling the driver.","commonSituations":"Local dev relying on PGDATABASE set in a shell that CI doesn't have; dotenv loaded too late or in a different process; typos like PG_DATABASE instead of PGDATABASE.","solutions":["Set `database` (or `connectionString`) explicitly in the PostgresPoolConfig passed to the driver","Export PGDATABASE in the environment where the app runs","Verify the .env file is loaded before the driver is constructed"],"exampleFix":"// before\nnew PostgresDatabase({ config: { host: 'localhost', user: 'app' } }) // throws\n\n// after\nnew PostgresDatabase({ config: { host: 'localhost', user: 'app', database: 'app_db' } })","handlingStrategy":"validation","validationCode":"if (!config.database && !config.connectionString && !process.env.PGDATABASE) {\n  throw new Error('Missing database: set config.database or PGDATABASE')\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Always set database or connectionString in config","Export PGDATABASE in CI/deploy environments","Load .env before constructing the driver"],"tags":["postgres","config","env-var","database-name"],"backgroundTag":"missing-env-var","analyzedSha":"9696913134be3a4423513d2775f7b31d6917c049","analyzedAt":"2026-08-27T19:55:01.024Z","schemaVersion":2},"datasetVersion":"2026-08-28T00:17:15.603Z"}