django.db.utils.OperationalError: unable to open database file
我跑的时候
1 | python manage.py runserver |
我收到这个错误
在get_new_connection中输入文件"/usr/local/lib/python2.7/dist-packages/Django-1.10.1-py2.7.egg/django/db/backends/sqlite3/base.py",第209行
conn = Database.connect(** conn_params)
django.db.utils.OperationalError:无法打开数据库文件
我的settings.py:
1 2 3 4 5 6 7 | DATABASES = { 'default': dj_database_url.config( default="sqlite:///{}".format( os.path.join(BASE_DIR, 'db/db.sqlite3') ) ) } |
从同一个问题中苦苦挣扎了一段时间,我相信我终于找到了解决方案!
1 | sudo python manage.py runserver |
这对我有用。
我的权限告诉我一切都是应该的。无论如何,我仍然必须在终端的命令开头输入sudo。
我有同样的问题,只是解决了它。确保www-data(或运行Web服务器的任何守护程序)都可以访问db.sqlite3文件以及它的路径。所以:
1 2 3 | sudo chown :www-data <project_folder>/ sudo chown :www-data <project_folder>/db.sqlite3 sudo chmod 664 <project_folder>/db.sqlite3 |
基本上有两个答案,即运行服务器的用户无权打开数据库文件。
你可以尝试解决这个问题:
1 | sudo chown $(whoami):$(whoami) /path/to/dir/db/db.sqlite3 |
或者您没有此文件,可以通过应用migrate命令创建它:
1 | ./manage.py migrate |
对我来说,问题是我有两个设置文件;一个用于生产,一个用于开发。在我的manage.py中,我指定了部署设置文件,忘了将manage.py添加到我的.gitignore,所以当我在本地运行项目时,尝试查找生产数据库时失败了。
只需删除settings.py文件中的第一个数据库即可。
如果删除第一个
您的数据库设置将是
1 2 3 4 5 6 7 | DATABASES = { 'default': dj_database_url.config( default="sqlite:///{}".format( os.path.join(BASE_DIR, 'db.sqlite3') ) ) } |
@ whinytween96:我已经看到当
即
为我解决了这个问题。