Django新手:python manage.py syncdb错误?

Django新手:python manage.py syncdb错误?,django,sqlite,Django,Sqlite,目前正在学习Django教程,在尝试时出现了以下错误: python manage.py syncdb 使用sqlite3 Traceback (most recent call last): File "manage.py", line 10, in <module> execute_from_command_line(sys.argv) File "/Library/Python/2.6/site-packages/django/core/management/

目前正在学习Django教程,在尝试时出现了以下错误:

python manage.py syncdb
使用sqlite3

Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/Library/Python/2.6/site-packages/django/core/management/__init__.py", line 443, in execute_from_command_line
    utility.execute()
  File "/Library/Python/2.6/site-packages/django/core/management/__init__.py", line 382, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/Library/Python/2.6/site-packages/django/core/management/base.py", line 196, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/Library/Python/2.6/site-packages/django/core/management/base.py", line 232, in execute
    output = self.handle(*args, **options)
  File "/Library/Python/2.6/site-packages/django/core/management/base.py", line 371, in handle
    return self.handle_noargs(**options)
  File "/Library/Python/2.6/site-packages/django/core/management/commands/syncdb.py", line 57, in handle_noargs
    cursor = connection.cursor()
  File "/Library/Python/2.6/site-packages/django/db/backends/__init__.py", line 306, in cursor
    cursor = self.make_debug_cursor(self._cursor())
  File "/Library/Python/2.6/site-packages/django/db/backends/sqlite3/base.py", line 281, in _cursor
    self._sqlite_create_connection()
  File "/Library/Python/2.6/site-packages/django/db/backends/sqlite3/base.py", line 271, in _sqlite_create_connection
    self.connection = Database.connect(**kwargs)
sqlite3.OperationalError: unable to open database file

有人知道这里的问题吗?似乎我正在放入完整的文件目录,但仍然无法创建数据库?:

您应该使用文件的路径,包括文件名:

    'NAME': '/Users/username/django_tutorial/mysite/data.sqlite', 
    'NAME': 'data.sqlite',
您也可以为其指定文件名:

    'NAME': '/Users/username/django_tutorial/mysite/data.sqlite', 
    'NAME': 'data.sqlite',
在这种情况下,它将被创建在与运行
manage.py
的目录相同的目录中

最佳做法是传递绝对路径,但要确保相对于设置文件创建此绝对路径。例如:

import os

SETTINGS_DIR = os.path.dirname(os.path.abspath(__file__))
而后者:

    'NAME': os.path.join(SETTINGS_DIR, 'data.sqlite'),

请记住,设置文件是一个Python文件,您可以在其中使用Python代码。

我认为您不需要名称的完整路径,只需输入文件名,即“my_db.db”。这是假设您已经安装了sqlite3。

在project的wiki上有一个Django新手错误列表。请参阅此条目:

这个特定的错误在Django的新手中是常见的错误。请参阅下面的详细说明

问题

在使用SQLite3时,您的
数据库\u NAME
设置为 数据库文件的完整路径,数据库文件可由Apache写入, 但是你仍然会得到上面的错误

解决方案

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

确保数据库文件的完整路径中的每个文件夹都没有启动 带有数字,例如
/www/4myweb/db
(在Windows 2000上观察)

如果
数据库\u NAME
设置为
'/Users/yourname/Sites/mydjangoproject/db'
,请确保 首先创建了“
db
”目录

确保您的
/tmp
目录是可写的(不太可能的原因如下) 系统上的其他东西也将不起作用)<代码>ls/tmp-ald应 制作
drwxrwt

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

如果您在windows上工作,也请确保您有到 用双反斜杠写入的db目录

'C:\\django\\sqlite\\django.db'

我不认为完整的路径实际上是它工作的必要条件。如果您将名称设置为“db”,它将在当前项目位置创建它。我假设SQLite数据库文件是自动创建的?@zhuyxn:不,您需要告诉它数据库文件的名称。您可以有多个sqlite数据库。它需要知道要使用哪个路径。完整路径不是必需的,但名称是文件的路径,它可以包含完整路径,也可以只包含文件名,但不能仅包含目录。数据库文件是自动创建的,但是你必须说它应该有什么名称。啊,明白了。谢谢你的及时回复!您的系统中有sqlite版本3吗?