Skip to content

Blob size limit at ~512MB despite MAX_LENGTH=2147483647 #1430

@kkshinkai

Description

@kkshinkai

Issue

Better-sqlite3 cannot insert blobs larger than ~512MB, even though MAX_LENGTH is compiled as 2147483647 (2GB).

Expected behavior

Should be able to insert blobs up to the configured limit (default 1GB or 2GB).

Actual behavior

  • Maximum successful blob size: 536,870,881 bytes (~512 MB)
  • Minimum failing blob size: 536,870,882 bytes
  • Error: string or blob too big

Test code

const Database = require('better-sqlite3');
const db = new Database('test.db');
db.pragma('journal_mode = WAL');
db.exec('CREATE TABLE test (id INTEGER PRIMARY KEY, data BLOB)');

const stmt = db.prepare('INSERT INTO test (id, data) VALUES (?, ?)');

// This works:
const buf1 = Buffer.alloc(536870881, 0);
stmt.run(1, buf1);

// This fails:
const buf2 = Buffer.alloc(536870882, 0);
stmt.run(2, buf2); // Error: string or blob too big

Environment

  • better-sqlite3 version: 11.10.0
  • SQLite version: 3.49.2
  • MAX_LENGTH (compile option): 2147483647
  • Node.js version: v22.20.0
  • OS: macOS

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions