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

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

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

这是我的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. } } 

Django新手误区

问题您正在使用SQLite3,您的DATABASE_NAME被设置为数据库文件的完整path,数据库文件可以被Apache写入,但仍然会出现上述错误。

解决scheme确保Apache也可以写入数据库的父目录。 SQLite需要能够写入这个目录。

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

如果DATABASE_NAME设置为'/ Users / yourname / Sites / mydjangoproject / db / db',请确保您已经创build了'db'目录。

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

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

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

我面临完全相同的问题。 这是我的设置工作。

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

其他设置在sqlite3的情况下将是相同的/默认的。
你需要创builddata.sqlite3。

你还没有指定绝对path – 你已经使用了一个快捷键~ ,这个快捷键可能不适用于这种情况。 改用/home/yourusername/Harold-Server/OmniCloud.db

你需要使用完整path而不是~/

在你的情况下,像/home/harold/Harold-Server/OmniCloud.db

在我的情况下,sqlite db文件db.sqlite3存储在apache的DocumentRoot中。 所以,即使在设置下面的权限后,它也不起作用:

 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移动到dbfolder下新创build的文件夹dbfolder并给出了上述权限时,它就起作用了。

使用这种types它为我工作。 Windows 7与Python 2.7和Django 1.5

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

希望它的作品…