Skip to content

SQLITE_BUSY returned after canceled transaction

I found odd behavior when I commit a no-op transaction (row is created then deleted), cancel committing a transaction, and roll it back, every DB operations returns SQLITE_BUSY. Prepared statements are being used for everything. I cannot reproduce this behavior using https://github.com/mattn/go-sqlite3, so I think it's an issue with this library.

I made a branch on the affected repo that has a minimal reproducer, let me know if I can help at all. Thanks for this project, it's amazing to be able to use SQLite in pure Go!

Failing reproducer is here: https://github.com/capnspacehook/sqlite-repro

You can find an error much faster by compiling with the race detector, but the error still occurs without it just much less frequently.

Edited by Andrew LeFevre