При использовании SQLITE_OPEN_URI
«имя файла можно интерпретировать как URI». Однако для того, чтобы он обрабатывался как URI, к нему должен быть добавлен префикс file:
, иначе он будет обрабатываться как обычное имя файла.
Итак, вы пытаетесь открыть файл с именем database.db?immutable=1
, который очевидно не существует. Обратите внимание, что при SQLITE_OPEN_READONLY
«если база данных еще не существует, возвращается ошибка». Поэтому самое простое решение - просто сделать строку file:database.db?immutable=1
.
Однако я предлагаю вам придерживаться только одного метода предоставления специальных опций; используйте флаг SQLITE_OPEN_URI
и поместите все остальные параметры в URI, например: file:database.db?mode=ro&immutable=1
.
(я понимаю, что не все комбинации параметров возможны при использовании только одного метода, но в вашем в таком случае я говорю «придерживайтесь одного», и вам не нужно беспокоиться о взаимодействии различных методов).
SQLite имеет обширную документацию, и вы можете прочитать все об открытии баз данных здесь .