On Mon, 24 Aug 2015 16:03:24 +0200 Luc Andre <landre3567 at gmail.com> wrote:
> Hi All, > > Our web servers use a daily updated sqlite database file. > > The file is opened by multiple (apache/PHP) threads but always in > read only mode: > > $db = new SQLite3(DB_FILE, SQLITE3_OPEN_READONLY); > > The file itself has no write access. > > -rw-r--r-- 1 root root 225759232 Aug 24 13:43 db.sqlite > > But sometimes we get PHP warnings: > > PHP Notice: SQLite3Stmt::execute(): Unable to execute statement: > database is locked > SQLite3::prepare(): Unable to prepare statement: 5, database is locked > SQLite3::querySingle(): Unable to execute statement: database is > locked > > We can not understand how a read only file can get locked. Some hints (some of them from documentation): a) If you use wal mode then you can't open it in read only mode, it' will be on read-write mode. b) If you have some triggers that modifies, inserts or delete data, you'll get a db locked if any attempts to fire when another is running. c) If you use wal mode and wal checkpoint isn't on passive mode, you'll get a db busy. d) Check performance on serialize threading mode (2), instead of multi-thread mode (1). e) If a journal size limit is set, whichever journal mode, a db lock happens. f) Some pragmas lock db, update user_version, cache_spill=on, > Any hint / fix ? > > Regards, > > Luc > _______________________________________________ > sqlite-users mailing list > sqlite-users at mailinglists.sqlite.org > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users --- --- Eduardo Morras <emorrasg at yahoo.es>