Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python &引用;无法打开数据库文件";在django_Python_Django - Fatal编程技术网

Python &引用;无法打开数据库文件";在django

Python &引用;无法打开数据库文件";在django,python,django,Python,Django,我对django中的sqlite3有问题。这是我第一次用这个 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': '/home/djangobook/mydb.db', 'USER': '', 'PASSWORD': '', 'HOST': '', 'PORT': '', } } 错误:

我对django中的sqlite3有问题。这是我第一次用这个

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:无法打开数据库文件”