how to open a SQLite3 database as read only
I'd like to be able to open a database as read only. I've tried quite a bit of WWW searching. There is this:
... The sqlite3_open_v2() interface works like sqlite3_open() except that it accepts two additional parameters for additional control over the new database connection. The flags parameter to sqlite3_open_v2() must include, at a minimum, one of the following three flag combinations: SQLITE_OPEN_READONLY The database is opened in read-only mode. If the database does not already exist, an error is returned. ...
... Flags For File Open Operations
#define SQLITE_OPEN_READONLY 0x00000001 ...
So it seems to be possible using a 'C' interface.
Running sqlite3.exe from the command line in Windows 10, then at the 'sqlite>' prompt entering '.help' shows the available '.' commands, including:
.open ?OPTIONS? ?FILE? Close existing database and reopen FILE
suggesting it might be possible in 'sqlite>' but when I try
.open 1 /pathto/mytest.db
where '/pathto/mytest.db' is a database I previously created using 'sqlite>' I'm getting this error message:
extra argument: "/pathto/mytest.db"
Are any '?OPTIONS?' actually possible?
Take a look at the shell's response to
, where you will see what options are possible.
Note also that values defined for the C interface do not translate unchanged to values which are meaningful for the shell's interface.
Thank you. It hadn't occurred to me that '.help' could be used for individual commands.
That tells me what I needed, and there is a '--readonly' option which I've just tried and it works. Unfortunately what I'm trying to do is open the Chrome browser History file while simultaneously running a Chrome browser: I know I can find the History from within Chrome - I do have reasons for wanting the History simultaneously from outside Chrome! I had hoped using the SQLite command line interface opening History as read only would work, but it seems '--readonly' is insufficient to overcome a Chrome lock on History because when I then try '.tables' I get a message 'Error: database is locked'. There must be a way to do what I want because https://www.nirsoft.net/web_browser_tools.html can read the History file while a Chrome browser is running. I've just noticed that that tool also has a command line interface option, and I've tried it, and it does what I want.
So, again thank you for your help, and this query is now most satisfactorily answered, so is now closed!