On Thu, Dec 30, 2021 at 05:53:14PM +0900, Dominique Martinet wrote:
So for a read-only filesystem, if the db has wal enabled, the files
have
to exist. (it's possible to disable WAL mode by running the sqlite 'PRAGMA
journal_mode=DELETE;' command when the partition is writable beforehand,
but I didn't see how to alter the mode while it is readonly)
FWIW, Sqlite has guidance here:
https://www.sqlite.org/wal.html#readonly
Older versions of SQLite could not read a WAL-mode database that was
read-only. In other words, write access was required in order to read a
WAL-mode database. This constraint was relaxed beginning with SQLite
version 3.22.0 (2018-01-22).
On newer versions of SQLite, a WAL-mode database on read-only media, or a
WAL-mode database that lacks write permission, can still be read as long
as one or more of the following conditions are met:
1. The -shm and -wal files already exists and are readable
2. There is write permission on the directory containing the database so
that the -shm and -wal files can be created.
3. The database connection is opened using the immutable query parameter.
Even though it is possible to open a read-only WAL-mode database, it is
good practice to converted to PRAGMA journal_mode=DELETE prior to burning
an SQLite database image onto read-only media.
--
Matthew Miller
<mattdm(a)fedoraproject.org>
Fedora Project Leader