Question

Django can't get access to sqlite3 database

Posted April 6, 2016 16.8k views
NginxUbuntuSecurityDjangoOne-Click Install AppsLet's Encrypt

I am currently running a server instance of the one-click install option for Django Ubuntu 14.04.

This server is running a Django app using NGINX, sqlite3, and gunicorn.

I set up letsencrypt properly and it is used to serve my website with ssl.

I deleted all of the files in /home/django/dango_project/ and replaced them with my own.

When I load my website, everything works fine, except for my admin site.

I am able to log in to the admin site when I run the django_project locally, but it isn’t working when the project is in production at my website.

You can verify that my db.sqlite3 file exists and contains posts by going to kensch.com/blog.

With debug disabled, my website gives a Server Error (500) after I log in to my admin site.

With debug enabled, my website gives OperationalError at /admin/
attempt to write a readonly database
after logging into the admin site.

I have been trying to get into my admin site for nearly 5 hours now, no google searches are helping.

I appreciate any help in advance!

1 comment
  • sir
    when i upload sqlite3 on django app hosted on digital ocean platform
    then data of the database i uploaded get deleted i am not able to understand what is the problem
    please suggest me the solution
    thanks in advance

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

×
5 answers

open puTTy
once you link the ip address and login
cd into file location ie
cd /home/django/django_project/
then enter

chown django:django db.sqlite3

Where you able to figure anything out? I just ran into the same problem.

Hello,
Here my solution:

root@fiq:/home/django/django_project# chmod 777 db.sqlite3

root@fiq:/home/django/django_project# cd ..

root@fiq:/home/django# chmod 777 *

Go to <your_website/admin> put username and password.. That’s it.

  • Hello,
    I appreciate your help
    I tried the above but I still receive a Server Error (500)

    • Try this.

      nano /etc/init/gunicorn.conf,

      change to :

      ’# If the process quits unexpectadly trigger a respawn
      respawn’

      *change to

      www-data django
      www-data django

      Hope this can help.

      • Hi btlychee,
        Thanks for the follow up.
        I have the gunicorn.conf file open, and I see

        # If the process quits unexpectadly trigger a respawn
        respawn
        

        But I don’t see

        www-data django
        www-data django
        

        In the file. You told me to “change to” two things, I’m not sure I understand what to change. Could you please be more specific as to what I should change?

        Again, I appreciate the help

The solution I found is very simple: you just need to add writing permission to the users of the database. Go to the folder of you db.sqlite3 and run chmod a+w db.sqlite3 to add writing permission for all users. Then run service gunicorn restart if the changes do not take effect. Worked for me.

I had the same problem which gave me a lot of headache but this small line of code ‘chmod a+w db.sqlite3’ performed the magic and it worked perfectly. Thank you santopolsky

Submit an Answer