当我跑
python manage.py runserver
我收到这个错误
文件“/usr/local/lib/python2.7/dist-packages/Django-1.10.1-py2.7.egg/django/db/backends/sqlite3/base.py”,第209行,在get_new_connection中conn =数据库.connect(** conn_params)django.db.utils.OperationalError:无法打开数据库文件
我的settings.py:
DATABASES = {
'default': dj_database_url.config(
default="sqlite:///{}".format(
os.path.join(BASE_DIR, 'db/db.sqlite3')
)
)
}
6 回答
从同一个问题中苦苦挣扎了一段时间,我相信我终于找到了解决方案!
这对我来说很有把戏 .
我的权限告诉我一切都应该如何 . 无论如何,我仍然必须在终端的命令开头输入 sudo .
基本上有两个答案,即运行服务器的用户无权打开数据库文件 . 您可以尝试解决此问题:
或者您没有此文件,可以通过应用migrate命令创建它:
我有同样的问题,只是解决了它 . 确保www-data(或运行Web服务器的任何守护程序)都可以访问db.sqlite3文件以及它的路径 . 所以:
只需删除settings.py文件中的第一个数据库即可 .
如果删除第一个
db
,你有os.path.join(BASE_DIR, 'db/db.sqlite3')
,你将os.path.join(BASE_DIR, 'db.sqlite3')
您的数据库设置将是
对我来说,问题是我有两个设置文件;一个用于 生产环境 ,一个用于开发 . 在我的manage.py中,我指定了部署设置文件,忘了将manage.py添加到我的.gitignore,所以当我在本地运行项目时,尝试查找 生产环境 数据库时失败了 .
@ whinytween96:我已经看到当
sudo
用于运行某些命令而不是其他命令时,会出现此问题 . 您需要与sudo
的用法保持一致才能解决此问题 . 我有数据库问题,我通过使用sudo
前缀再次运行命令来修复它 .即
sudo python manage.py runserver
sudo python manage.py makemigrations
sudo python manage.py migrate
为我解决了这个问题 .