我正在关注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
我还用于测试目的,为每个人添加了完全权限。
但正如我所说,我收到以下错误:
sqlite3.OperationalError: unable to open database file
感谢任何帮助,
安德鲁
答案 0 :(得分:9)
我知道这个问题已经得到了答案,但我认为你错过了一些东西。当字符串包含反斜杠时,您应该使用原始字符串:
DATABASE_NAME = r'C:\Software\Sqlite\databases\blog.db'
如果您不使用原始字符串,则会发生这种情况:
>>> print 'C:\Software\Sqlite\databases\blog.db'
C:\Software\Sqlite\databaselog.db
答案 1 :(得分:2)
我认为您不能使用完整的Windows路径来访问您的sqlite数据库。我在这里运行了一些测试,唯一可以在django上使用sqlite3数据库而不是在项目的同一目录中的方法是使用DATABASE_NAME ='../anotherfolder/db.db'(这位于c:\ anotherfolder \和项目位于c:\ mydjangoproject)
答案 2 :(得分:0)
猜测是该文件实际上不在该目录中。如果您启用了UAC,Windows 7将使文件看起来就像该位置一样(它将显示在Windows资源管理器中)。但是,该文件实际存储在c:\ users \ yourusername \ AppData \ Local \ VirtualStore \ Software \ Sqlite \ databases或类似位置。
答案 3 :(得分:0)
查看文件夹的权限。您的普通用户可以在那里编辑文件吗?
答案 4 :(得分:0)
反转DATABASE_NAME中的斜杠:
从C:\Software\Sqlite\databases\blog.db
到。{
C:/Software/Sqlite/databases/blog.db
我在Win7上使用django 1.4,这是我的解决方案 - 文件不需要存在
答案 5 :(得分:0)
反转数据库名称中的斜杠解决了我的问题。