type

SQL.Options

type Options = SQLiteOptions | PostgresOrMySQLOptions

Configuration options for SQL client connection and behavior

const config: Bun.SQL.Options = {
  host: 'localhost',
  port: 5432,
  user: 'dbuser',
  password: 'secretpass',
  database: 'myapp',
  idleTimeout: 30,
  max: 20,
  onconnect: (err) => {
    if (!err) console.log('Connected to database');
  }
};

Referenced types

interface SQLiteOptions

Options for Database

  • adapter?: 'sqlite'
  • create?: boolean

    Allow creating a new database

    Equivalent to constants.SQLITE_OPEN_CREATE

  • filename?: URL | string & {} | ':memory:'

    Path to the database file

    Examples:

    • sqlite://:memory:
    • sqlite://./path/to/database.db
    • sqlite:///Users/bun/projects/my-app/database.db
    • ./dev.db
    • :memory:
  • onclose?: (err: null | Error) => void

    Called when a connection is closed. Receives the closing Error, or null.

  • onconnect?: (err: null | Error) => void

    Called when a connection attempt completes. Receives an Error on failure, or null on success.

  • readonly?: boolean

    Open the database as read-only (no write operations, no create).

    Equivalent to constants.SQLITE_OPEN_READONLY

  • readwrite?: boolean

    Open the database as read-write

    Equivalent to constants.SQLITE_OPEN_READWRITE

  • safeIntegers?: boolean

    When true, integers are returned as bigint.

    When false, integers are returned as number and truncated to 52 bits.

  • strict?: boolean

    When set to false or undefined:

    • Queries missing bound parameters do NOT throw an error
    • Bound named parameters in JavaScript need to exactly match the SQL query.
    const db = new Database(":memory:", { strict: false });
    db.run("INSERT INTO foo (name) VALUES ($name)", { $name: "foo" });

    When set to true:

    • Queries missing bound parameters throw an error
    • Bound named parameters in JavaScript no longer need the $, :, or @ prefix. The SQL query keeps its prefix.

interface PostgresOrMySQLOptions

  • adapter?: 'postgres' | 'mysql' | 'mariadb'

    Database adapter/driver to use

  • allowPublicKeyRetrieval?: boolean

    MySQL only. Allow the client to request the server's RSA public key during caching_sha2_password / sha256_password authentication when the connection is not protected by TLS. Disabled by default because a network attacker can substitute their own key and recover the plaintext password. Enable only for trusted local connections, or use TLS instead.

  • bigint?: boolean

    Return values outside the i32 range as BigInt. By default they are returned as strings.

  • connection?: Record<string, string | number | boolean>

    Postgres client runtime configuration options

  • connectionTimeout?: number

    Maximum time in seconds to wait when establishing a connection

  • database?: string

    Name of the database to connect to

  • hostname?: string

    Database server hostname

  • idleTimeout?: number

    Maximum time in seconds a connection can sit idle before it is closed

  • max?: number

    Maximum number of connections in the pool

  • maxLifetime?: number

    Maximum lifetime in seconds of a connection

  • onclose?: (err: null | Error) => void

    Called when a connection is closed. Receives the closing Error, or null.

  • onconnect?: (err: null | Error) => void

    Called when a connection attempt completes. Receives an Error on failure, or null on success.

  • password?: string | () => MaybePromise<string>

    Database password for authentication

  • path?: string

    Unix domain socket path for connection

  • port?: string | number

    Database server port number

  • prepare?: boolean

    Automatic creation of prepared statements

  • tls?: boolean | BunFile | 'require' | TLSOptions | 'disable' | 'allow' | 'prefer' | 'verify-ca' | 'verify-full'

    Whether to use TLS/SSL for the connection. A string selects the SSL mode ("disable", "allow", "prefer", "require", "verify-ca", "verify-full").

  • url?: string | URL

    Connection URL, for example postgres://user:pass@localhost:5432/mydb

  • username?: string

    Database user for authentication