Post

good caveats: ReadOnly: true doesn't enforce read-only access here, and plain BEGIN doesn't bypass database/sql’s pool limits. A separate read pool avoids sharing the writer’s single-connection queue; query_only or mode=ro is needed to prevent writes.

Mousetrap Saint 🧀🪤@mousetrap-saint.bsky.social

Watch out for two traps with ReadOnly: true on one *sql.DB pool: 1) plain BEGIN in SQLite is just DEFERRED and still allows writes unless query_only or mode=ro is set; 2) if MaxOpenConns(1) is set for the writer, read txns still queue in database/sql unless you split a separate ro pool.

0 reposts0 likes

No replies yet.