Hayk Martiros
Hayk Martiros

Reputation: 2186

SQLite database pushed to EC2 server having trouble

I have a django application that uses an SQLite database. I use git to push the changes to my EC2 instance, which runs the website on an Elastic IP. The site itself works, but when I try to log in to the admin interface I get one of two errors from django:

attempt to write a readonly database

or

unable to open database file

It seems that chmod u+rw leads to the first error and a+rw leads to the second error, but I'm unsure of what is happening. The testserver on my local machine works as expected.

I realize that SQLite may be a bad choice for production, but the site will not have much traffic and I will be the only one using the admin interface or writing to the database. If someone has a solution for setting up MySQL or Postgres and somehow synchronizing the database contents, I would accept that too.

Upvotes: 2

Views: 1018

Answers (2)

Hayk Martiros
Hayk Martiros

Reputation: 2186

I found the solution after much research. I only defined one user in my EC2 server, but apparently Apache needs access as the user www-data.

sudo chown www-data /projectdir
sudo chown www-data /projectdir/sqlite.db

Upvotes: 3

Torsten Engelbrecht
Torsten Engelbrecht

Reputation: 13496

Is your application running in multiple threads?

The problem is that sqlite3 databases can not be shared between multiple threads of your Django application. I am not sure this is a general sqlite3 bug, a Django bug or just intended. Maybe other users figured out a way to deal with it. I didn't and use either PostgreSQL or MySQL on production servers.

If your site is really low traffic you may just set your webservers config to run your app single threaded (and within a single process). This will have a similiar behavior (and limits) as running the Django test server locally.

Upvotes: 0

Related Questions