SQLite Forum

open db in read only; explicitly store diff as WAL ?
Login
This is incorrect.  If you open a database in read-only mode you cannot modify it.  It does not matter what journal mode is in effect.  If you attempt to "open" a write transaction against a read-only database it will fail with the message that you cannot modify a read-only database.

```
>sqlite
SQLite version 3.36.0 2021-04-05 23:06:42
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .open cases.db
sqlite> pragma journal_mode=wal;
┌──────────────┐
│ journal_mode │
├──────────────┤
│ wal          │
└──────────────┘
sqlite> .open -readonly cases.db
sqlite> pragma journal_mode;
┌──────────────┐
│ journal_mode │
├──────────────┤
│ wal          │
└──────────────┘
sqlite> .databases
main: D:\work\covid\cases.db r/o
sqlite> begin immediate;
sqlite> .databases
main: D:\work\covid\cases.db r/o read-txn
sqlite> create table main.x(x);
Error: attempt to write a readonly database
sqlite>
```

You cannot write to a read-only database.