2

現在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

私のsettings.pyファイルは次のようになります。

        'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': '/Users/username/django_tutorial/mysite', 

誰かがここで問題を知っていますか?完全なファイルディレクトリに入れているようですが、それでもデータベースを作成できませんでしたか?):

4

3 に答える 3

4

ファイル名を含むファイルへのパスを使用する必要があります。

    '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コードを使用できることを忘れないでください。

于 2012-05-29T21:50:45.523 に答える
1

プロジェクトのwikiにDjango初心者の間違いのリストがあります。このエントリを参照してください:https ://code.djangoproject.com/wiki/NewbieMistakes#DjangosaysUnabletoOpenDatabaseFilewhenusingSQLite3

この特定のエラーは、Djangoの初心者の間でよくある間違いです。以下の詳細な説明を参照してください。

問題

SQLite3を使用してDATABASE_NAMEいて、データベースファイルのフルパスに設定されており、データベースファイルはApacheで書き込み可能ですが、それでも上記のエラーが発生します。

解決

Apacheがデータベースの親ディレクトリにも書き込めることを確認してください。SQLiteはこのディレクトリに書き込める必要があります。

データベースファイルのフルパスの各フォルダが数字で始まっていないことを確認してください。/www/4myweb/db(Windows 2000で観察)。

DATABASE_NAMEがのようなものに設定されている 場合は、最初に''ディレクトリ'/Users/yourname/Sites/mydjangoproject/db/db'を作成したことを確認してください。db

ディレクトリが誰でも書き込み可能であることを確認してください/tmp(システム上の他のものも機能しないため、起こりそうもない原因です)。ls /tmp -ald生成する必要がありdrwxrwxrwtます...。

で指定されたデータベースへのパスがフルパスであることを確認してくださいsettings.py

Windowsで作業している場合は、dbディレクトリへのパスが二重のバックラッシュで記述されていることも確認してください。

'C:\\django\\sqlite\\django.db'
于 2012-05-30T00:29:33.283 に答える
0

名前のフルパスは必要ないと思います。ファイル名、つまり「my_db.db」を入力してください。これは、sqlite3がインストールされていることを前提としています。

于 2012-05-29T22:44:40.100 に答える