1. ホーム
  2. python

[解決済み] sqlite3.OperationalError: データベースファイルを開くことができません。

2022-02-17 14:23:22

質問

Djangoでサーバーをセットアップする際にこのエラーが発生します。これは sqlite3 で、つまり .db ファイルを作成するはずなのですが、そうなっていないようです。バックエンドに SQLite を指定し、それを置くための絶対ファイルパスも指定しましたが、うまくいきません。

これはバグでしょうか、それとも私が何か間違ったことをしているのでしょうか?(ちょっと思ったのですが、Ubuntuでは絶対ファイルパスの指定が違うのでしょうか?)

以下は、私のsettings.pyファイルの冒頭部分です。

# Django settings for OmniCloud project.

DEBUG = True
TEMPLATE_DEBUG = DEBUG

ADMINS = (
# ('Your Name', '[email protected]'),
)

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が「.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で指定したデータベースへのパスが完全なものであることを確認します。 のパスが必要です。

また、ファイルが期待する場所に存在することを確認してください。