sqlite3.OperationalError:无法打开数据库文件
在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.
}
}
-
问题您正在使用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中指定的数据库路径是完整路径。
另外,请确保该文件位于您期望的位置。