Python &引用;无法打开数据库文件";在django
我对django中的sqlite3有问题。这是我第一次用这个Python &引用;无法打开数据库文件";在django,python,django,Python,Django,我对django中的sqlite3有问题。这是我第一次用这个 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': '/home/djangobook/mydb.db', 'USER': '', 'PASSWORD': '', 'HOST': '', 'PORT': '', } } 错误:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': '/home/djangobook/mydb.db',
'USER': '',
'PASSWORD': '',
'HOST': '',
'PORT': '',
}
}
错误:
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/django/db/backends/__init__.py", line 324, in cursor
cursor = self.make_debug_cursor(self._cursor())
File "/usr/local/lib/python2.7/dist-packages/django/db/backends/sqlite3/base.py", line 306, in _cursor
self._sqlite_create_connection()
File "/usr/local/lib/python2.7/dist-packages/django/db/backends/sqlite3/base.py", line 296, in _sqlite_create_connection
self.connection = Database.connect(**kwargs)
OperationalError: unable to open database file
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
游标中的文件“/usr/local/lib/python2.7/dist packages/django/db/backends/_init__.py”,第324行
cursor=self.make\u debug\u cursor(self.\u cursor())
文件“/usr/local/lib/python2.7/dist-packages/django/db/backends/sqlite3/base.py”,第306行,在光标处
self.\u sqlite\u create\u connection()
文件“/usr/local/lib/python2.7/dist packages/django/db/backends/sqlite3/base.py”,第296行,在sqlite\u create\u connection中
self.connection=Database.connect(**kwargs)
操作错误:无法打开数据库文件
谢谢您的帮助。您需要对/home/djangobook/目录和/home/djangobook/mydb.db文件(存在)进行写访问 如果/home/djangobook/mydb.db文件不存在,您需要按照@user1788781的指示运行python manage.py syncdb。您还没有运行 在与manage.py相同级别的应用程序文件夹中,在控制台中运行以下命令:
python manage.py syncdb
为了更好地理解django,请按照下面的方法编写对文件夹的访问权限。请快速回答我的问题,因为在使用Graphite部署时,还有另一种可能会影响我(Graphite的web UI是httpd+django)。 即使配置了完整路径,对db文件和目录的权限都是可以的,您也可以强制使用Selinux 如果您需要selinux强制执行,很抱歉,我现在无法提供有关如何使此设置工作的详细信息,但如果意外启用,请执行以下操作:
root # getenforce
Enforcing
root # setenforce 0
root # getenforce
Permissive
一个提示,要更深入地调试此问题并确认它与权限有关,您可以使用strace
:
$ sudo service httpd stop
$ sudo strace -f service httpd start 2>&1 | tee tmp.log
# strace log could contain something similar to the following:
$ grep mydb.db tmp.log
.... stat("/home/djangobook/mydb.db", 0x7fff55023b80) = -1 EACCES (Permission denied)
.... open("/home/djangobook/mydb.db", O_RDWR|O_CREAT, 0644) = -1 EACCES (Permission denied)
你已经运行syncdb了吗?嗨,亲爱的。不,这是什么?你是以用户djangobook的身份运行的吗?您有对给定路径的写入权限吗?@user1788781 syncdb是在应用程序文件夹中创建数据库的命令,其级别与manage.py相同在控制台中运行此命令:python manage.py syncdbyes,我有对给定路径的写入权限。谢谢,但结果是:python manage.py syncdb-->“OperationalError:无法打开数据库文件”确定,请确保/home/djangobook/目录存在,并且您的用户对/home/djangobook/具有写访问权限。我具有根访问权限:(谢谢,但结果是:python manage.py syncdb-->“OperationalError:无法打开数据库文件”