我正在关注DJango网站上的教程,我预先使用Windows XP并且一切正常,但在Windows 7上出现以下错误:
sqlite3.OperationalError: unable to open database file
我使用以下内容:
python manage.py sql Blog
有没有人有什么想法可能是错的。 数据库文件位于C:\Software\Sqlite\Databases\Blog.db
而相对settings.py或部分是简单的:
DATABASE_ENGINE = 'sqlite3' # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'. DATABASE_NAME = 'C:\Software\Sqlite\databases\blog.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
我也为testing目的添加了所有人的完整权限。
但正如我所说,我得到以下错误:
sqlite3.OperationalError: unable to open database file
任何帮助表示赞赏,
安德鲁
我不认为你可以使用完整的Windows路径来访问您的SQLite数据库。 我在这里运行了一些测试,我只能在django上使用sqlite3数据库,而不是使用DATABASE_NAME ='../anotherfolder/db.db'(这是位于c:\ anotherfolder \和项目位于c:\ mydjangoproject)
我知道这个问题已经被接受了,但是我想你错过了一些东西。 当你的字符串包含反斜杠时,你应该使用原始字符串:
DATABASE_NAME = r'C:\Software\Sqlite\databases\blog.db'
这是如果你不使用一个原始字符串会发生什么:
>>> print 'C:\Software\Sqlite\databases\blog.db' C:\Software\Sqlite\databaselog.db
猜测是该文件实际上不在该目录中。 如果你有UAC启用的Windows 7将使它看起来像文件是在该位置(它会显示在Windows资源管理器中)。 但是,该文件实际上存储在c:\ users \ yourusername \ AppData \ Local \ VirtualStore \ Software \ Sqlite \ databases或类似的位置。
看看文件夹的权限。 你的普通用户能在那里编辑文件吗?
反转DATABASE_NAME中的斜杠:从C:\Software\Sqlite\databases\blog.db
到C:/Software/Sqlite/databases/blog.db
我在Win7上使用django 1.4,这是我的解决方案 – 文件不需要已经存在
在数据库名称中反斜杠解决了我的问题。