JuliusBrussee/caveman · error

migrate sqlite %q: %w

Error message

migrate sqlite %q: %w

What it means

Error "migrate sqlite %q: %w" thrown in JuliusBrussee/caveman.

Source

Thrown at engine/ccr/store_sqlite.go:170

	if err != nil {
		return nil, err
	}
	if afterPrepare != nil {
		afterPrepare()
	}
	db, err := sql.Open("sqlite", SQLiteDSN(canonicalPath))
	if err != nil {
		return nil, fmt.Errorf("open sqlite %q: %w", canonicalPath, err)
	}
	// One writer connection. With a single connection every statement serializes
	// in-process (no self-contention) while busy_timeout absorbs cross-process
	// contention; it is also mandatory for an in-memory DSN, where a second
	// pooled connection would be a second, empty database.
	db.SetMaxOpenConns(1)
	db.SetMaxIdleConns(1)
	if err := RetryOnBusy(func() error { _, e := db.Exec(schema); return e }); err != nil {
		_ = db.Close()
		return nil, fmt.Errorf("migrate sqlite %q: %w", canonicalPath, err)
	}
	if err := RetryOnBusy(func() error { return ensureMetadataColumn(db) }); err != nil {
		_ = db.Close()
		return nil, fmt.Errorf("migrate sqlite metadata %q: %w", canonicalPath, err)
	}
	if err := configureStorageBudget(db, maxBytes); err != nil {
		_ = db.Close()
		return nil, fmt.Errorf("configure sqlite storage budget %q: %w", canonicalPath, err)
	}
	if err := secureSQLiteFiles(canonicalPath); err != nil {
		_ = db.Close()
		return nil, err
	}
	// CCR is one local embedded database. Serialize access through one connection:
	// this prevents SQLITE_BUSY under background capture and keeps :memory:
	// stores on the same schema-bearing connection.
	db.SetMaxOpenConns(1)
	db.SetMaxIdleConns(1)

View on GitHub (pinned to 27d5a3981a)

Solutions

  1. Fix the sqlite migration error and retry.

When it happens

Trigger: Thrown at engine/ccr/store_sqlite.go:170 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of JuliusBrussee/caveman@27d5a3981a (2026-08-15). Data as JSON: /api/errors/151ae57cd09974c6. Report an issue: GitHub.