beekeeper-studio/beekeeper-studio · error

Invalid database name

Error message

Invalid database name

What it means

FirebirdClient.connect validates that a database path/name was configured and throws 'Invalid database name' when config.database is not a non-empty string. Firebird requires a database file path or alias to open a connection, so an empty value cannot proceed.

Source

Thrown at apps/studio/src-commercial/backend/lib/db/clients/firebird.ts:275

    // Route through the SSH tunnel's local endpoint when a tunnel is active.
    const host = this.server.sshTunnel
      ? this.server.config.localHost
      : this.server.config.host;
    const port = this.server.sshTunnel
      ? this.server.config.localPort
      : this.server.config.port;

    const config = {
      host,
      port,
      user: this.server.config.user,
      password: this.server.config.password,
      database: this.database.database,
      blobAsText: true,
    };

    if (typeof config.database !== "string" || config.database === "") {
      throw new Error("Invalid database name");
    }

    this.firebirdOptions = config;

    log.debug("create driver client for firebird with config %j", config);

    this.pool =  new Pool(BksConfig.db.firebird.maxConnections, config);

    const versionResult = await this.driverExecuteSingle(
      "SELECT RDB$GET_CONTEXT('SYSTEM', 'ENGINE_VERSION') from rdb$database;"
    );
    this.version = versionResult.rows[0]["RDB$GET_CONTEXT"];

    const serverConfig = this.server.config;
    const knex = knexlib({
      client: Client_Firebird,
      connection: {
        host,

View on GitHub (pinned to 4e3e03e322)

Solutions

  1. Set the database field to a valid .FDB file path or a Firebird alias in the connection settings
  2. Check saved connection config for an empty/missing database key
  3. Verify the path exists on the server host and is reachable with the given credentials

Example fix

// before
{ client: 'firebird', host: 'localhost', database: '' }
// after
{ client: 'firebird', host: 'localhost', database: '/data/employees.fdb' }
Defensive patterns

Strategy: validation

Validate before calling

if (typeof config.database !== 'string' || config.database.trim() === '') {
  throw new Error('Firebird connection requires a database file path or alias');
}
await client.connect(config);

Type guard

function hasFirebirdDatabase(c: { database?: unknown }): c is { database: string } {
  return typeof c.database === 'string' && c.database.length > 0;
}

Try / catch

try {
  await client.connect(config);
} catch (err) {
  if (err.message === 'Invalid database name') {
    promptForDatabasePath();
  } else throw err;
}

Prevention

When it happens

Trigger: Opening a Firebird connection with the database field empty or set to a non-string value in the connection form or saved config.

Common situations: Imported or hand-edited connection configs missing the database path; users used to server-only auth flows leaving it blank; environment-specific configs where the path placeholder was never filled.

Related errors


AI-assisted analysis of beekeeper-studio/beekeeper-studio@4e3e03e322 (2026-08-31). Data as JSON: /api/errors/f9f48ba29090ed7d. Report an issue: GitHub.