https://www.sqlite.org/wal.html
"5. It is not possible to open read-only WAL databases. The opening process must have write privileges for "-shm" wal-index shared memory file associated with the database, if that file exists, or else write access on the directory containing the database file if the "-shm" file does not exist." second, I'm pretty sure that WAL mode is written to the database, so it remembers what journal mode it was using... which if it wasn't WAL would require writing to the database.