Database Django是;无法打开数据库文件";
在运行“python manage.py syncdb”之后,我收到一个错误消息“无法打开数据库文件” 以下是my settings.py中的重要部分: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
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