59

在 Django 中设置服务器时出现此错误。它是 sqlite3,这意味着它应该创建 .db 文件,但它似乎没有这样做。我已经将 SQLite 规定为后端,并规定了放置它的绝对文件路径,但没有运气。

这是一个错误还是我做错了什么?(只是在想,在 Ubuntu 中指定的绝对文件路径是否不同?)

这是我的 settings.py 文件的开头:

# Django settings for OmniCloud project.

DEBUG = True
TEMPLATE_DEBUG = DEBUG

ADMINS = (
# ('Your Name', 'your_email@example.com'),
)

MANAGERS = ADMINS

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
    'NAME': '~/Harold-Server/OmniCloud.db',                      # Or path to database file if using sqlite3.
    'USER': '',                      # Not used with sqlite3.
    'PASSWORD': '',                  # Not used with sqlite3.
    'HOST': '',                      # Set to empty string for localhost. Not used with sqlite3.
    'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
}
}
4

7 回答 7

85

Django 新手错误

问题您使用的是 SQLite3,您的 DATABASE_NAME 设置为数据库文件的完整路径,数据库文件可由 Apache 写入,但您仍然收到上述错误。

解决方案 确保 Apache 也可以写入数据库的父目录。SQLite 需要能够写入此目录。

确保数据库文件完整路径的每个文件夹不以数字开头,例如。/www/4myweb/db(在 Windows 2000 上观察)。

如果 DATABASE_NAME 设置为“/Users/yourname/Sites/mydjangoproject/db/db”,请确保首先创建了“db”目录。

确保您的 /tmp 目录是全局可写的(这是一个不太可能的原因,因为您系统上的其他东西也不起作用)。ls /tmp -ald 应该产生 drwxrwxrwt ....

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

还要确保文件存在于您期望的位置。

于 2011-10-06T05:37:15.013 回答
21

我遇到了完全相同的问题。这是我的设置。

'ENGINE': 'django.db.backends.sqlite3', 
'NAME': '/home/path/to/your/db/data.sqlite3'

sqlite3 的其他设置将相同/默认。
你需要创建data.sqlite3。

于 2012-06-28T10:37:37.050 回答
11

您尚未指定绝对路径 - 您使用了快捷方式 , ~,这在此上下文中可能不起作用。改为使用/home/yourusername/Harold-Server/OmniCloud.db

于 2011-10-06T08:11:35.870 回答
6

您需要使用完整路径而不是~/.

在您的情况下,类似/home/harold/Harold-Server/OmniCloud.db.

于 2013-08-08T23:18:12.163 回答
6

在我的情况下,sqlite db 文件db.sqlite3存储在DocumentRootapache 中。因此,即使设置了以下权限,它也不起作用:

sudo chown www-data:www-data /path/to/db-folder
sudo chown www-data:www-data /path/to/db-folder/sqlite-db.db

最后,当我移动db.sqlite3到一个新创建的文件夹dbfolderDocumentRoot授予上述权限时,它就起作用了。

于 2015-04-26T19:05:04.483 回答
2

我在使用 Apache 服务时遇到了这个问题,发现在我的 .env////中使用 sqlite3 db 的绝对路径而不是使用相对路径///可以解决问题。上面提到的所有权限和所有权也是必要的。

于 2020-12-26T04:15:16.987 回答
1

使用这种对我有用的类型。带有 python 2.7 和 django 1.5 的 windows 7

'ENGINE': 'django.db.backends.sqlite3',
'NAME': 'C:\\tool\\mysite\\data.db',

希望它的作品...

于 2013-05-30T01:30:08.453 回答