Database Django是;无法打开数据库文件";

Database Django是;无法打开数据库文件";,database,django,sqlite,django-models,django-admin,Database,Django,Sqlite,Django Models,Django Admin,在运行“python manage.py syncdb”之后,我收到一个错误消息“无法打开数据库文件” 以下是my settings.py中的重要部分: DATABASE_ENGINE = 'sqlite3' # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'. DATABASE_NAME = 'apps.db' # Or path to database file if using sqli

在运行“python manage.py syncdb”之后,我收到一个错误消息“无法打开数据库文件”

以下是my settings.py中的重要部分:

DATABASE_ENGINE = 'sqlite3'    # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
DATABASE_NAME = 'apps.db'      # Or path to database file if using sqlite3.
DATABASE_USER = ''             # Not used with sqlite3.
DATABASE_PASSWORD = ''         # Not used with sqlite3.
DATABASE_HOST = ''             # Set to empty string for localhost. Not used with sqlite3.
DATABASE_PORT = ''             # Set to empty string for default. Not used with sqlite3.
下面是“apps.db”的权限:

我的django服务器是从apache调用的。。。我不知道这是否与权限有关,但将apps.db的所有者更改为“www data”也不起作用

[编辑]

为了确保www数据能够访问所有这些,我做了以下工作:

他做了以下工作:

chown -R www-data apps
rm apps.db
su www-data
python manage.py syncdb

但它仍然不起作用:(

我通过将数据库名称更改为绝对路径来解决错误:
/var/www/apps/apps.db

在windows计算机上,反斜杠应该像这样转义:
C:\\path\\to\\database\\database\u name.db

确保Apache也可以写入 SQLite需要能够写入此目录

确保数据库文件的完整路径中的每个文件夹都没有启动 带有数字,例如/www/4myweb/db(在Windows 2000上观察到)

如果数据库名称设置为 “/Users/yourname/Sites/mydjangoproject/db/db”,请确保 首先创建了“db”目录

确保您的/tmp目录是全局可写的(不太可能的原因如下) 系统上的其他东西也不起作用) 生产DRWXRWT

确保settings.py中指定的数据库路径为完整路径 路径


数据库名称已弃用。必须使用当前支持的格式。 i、 e


还可以从django网站上看到其他不推荐的设置。:)

好吧,我回答了这个问题

我面临着完全相同的问题。这是我的工作环境

'ENGINE': 'django.db.backends.sqlite3', 
'NAME': '/home/neo/django/db/data.sqlite3'

sqlite3的其他设置将与默认设置相同。

对于我的linux系统,我必须向进程所有者授予对db.sqlite3和包含它的目录的写入权限!你可以用setfacl代替!例:()

(py2.7)[me@serverdjango项目容器]$ls-la django项目/

drwxrwxr-x. 6 root nginx  4096 Jun 14 01:05 .
drwxr-xr-x. 6 root root  4096 Jun 13 23:47 ..
-rwxrwxrwx. 1 root nginx 49152 Jun 14 01:05 db.sqlite3

要更改父目录的权限,可以使用以下命令集:

检查apache v2的apache进程:

ps -ef | grep apache | grep -v grep
用户/组是www数据

chgrp www-data /path/to/mydir
chmod g+w /path/to/mydir

Ref:

只需重命名扩展名为.sqlite3的数据库文件,这对我来说很有用。

确保www数据可以遍历到数据库的整个路径,而不仅仅是读/写数据库文件。父目录权限(对我而言)不明显;谢谢。还有一个常见问题条目。那么我真的应该对包含目录的数据库启动
chmod 777
?如果我试图通过网络访问数据库,并且路径以“\\MyMachine\…”开头,翻译为“\\\\MyMachine\…”,该怎么办。然后我无法打开连接,我得到“无法打开数据库文件”。即使数据库在我的机器上,我也只是尝试以不同的方式访问它。
ps -ef | grep apache | grep -v grep
chgrp www-data /path/to/mydir
chmod g+w /path/to/mydir