In go, I open a sqlite3 database using the mattn/go-sqlite3 module. I set the database journalling mode to WAL immediately after opening using a PRAGMA journal_mode=WAL.
However, if I try to open the database from a second process while the first is running, the second cannot open it and instead gets the "database is locked" error. This happens even if I did not perform any transactions.
The connection string I am using is:
"file:mydbfile.db?cache=shared&mode=rwc"
(I intend to answer my own question, since it took a long time to debug)