一尘不染

sqlite3.OperationalError:无法打开数据库文件

django

在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.
}
}

阅读 891

收藏
2020-03-29

共1个答案

一尘不染

问题你正在使用SQLite3,你的DATABASE_NAME设置为数据库文件的完整路径,该数据库文件可由Apache写入,但仍会出现上述错误。

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

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

如果将DATABASE_NAME设置为“ / Users /你的名称/站点/ mydjangoproject / db / db”之类的内容,请确保首先创建了“ db”目录。

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

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

另外,请确保该文件位于你期望的位置。

2020-03-29