When writing a web app using an SQLite database file, you might run into an error where you can read from the file but not write to it... Despite the database file being writable to the user as it should be.

In PHP, this looks something like:

SQLSTATE[HY000]: General error: 14 unable to open database file.

In Python:

sqlite3.OperationalError: unable to open database file

What gives? The error is particularly confusing because you just did open the database file and read from it just fine.

Turns out, the problem is the permissions on the directory the database resides in. When writing to an SQLite file, the database engine need to be able to write a lockfile to the database directory.

The fix is easy. For instance, if your web server runs as the user/group www-data, you'd do something like:

cd .../my-app
chgrp www-data databasedir
chgrp www-data databasedir/mydb.db
chmod g+w databasedir
chmod g+w databasedir/mydb.db

Was this helpful? Buy me a coffee with Bitcoin! (What is this?)

Updating Adobe Flash Without Restarting Firefox

No reason for a Flash upgrade to shut down your entire browser, even if it claims so.It's 2015, and the love-hate relationship of the Web...… Continue reading

Reddit's Fail-Alien (or "Fail-ien?")

Published on January 15, 2015