2011-01-31 2 views
5

これはDjangoの4年間で最も不思議な問題です。DatabaseError:dbファイルを開くことができませんが、Djangoの管理者のみ

私のサイトは正しく動作しています。実稼働環境では、管理サイトにアクセスしようとするとApacheエラー・ログに「OperationalError:データベース・ファイルをオープンできません」というサーバー・エラーが発生します。

DBファイルはワールドワイド書き込み可能で、設定内のパスは絶対パスです。本番環境はUbuntu Lucid/Python 2.6/Sqlite3です。私はDjango 1.2.4と1.3 betaを試しました。

奇妙な部分は、サーバー上でsyncdbできます。テーブルと管理者ユーザーを作成します。私は問題なくサイトにアクセスできます。 shellを実行し、Pythonプロンプトでコンテンツを作成できます。サイトはブラウズ可能です。それは私がadminにアクセスするときだけです、私はこのエラーを取得します。

私は推論の根拠がありません。どんな助けでも大歓迎です。

ps:エラーはApacheレベルで発生し、Djangoでは発生しません。 DjangoトレースバックはApacheエラーログにあり、DatabaseError: unable to open database fileとなります。

+0

を行いますすべてのあなたのモデルは、データベースのように、同じバージョンであることを確認していますか?私は一度同様の問題を抱えていました。私はこのモデルを私の普通のページではめったに使用しなかったので、最初はそれを実現しませんでした。しかし、管理者はすべてを一度に開くことができます。 –

+0

私はモデルで問題を見つけることができませんでした。とにかく私は管理サイトにローカルでアクセスできます。また、それがモデルの場合、私は 'can not open database file'ではなく、別のエラーを取得します。それは私が思う何か他のものでなければなりません。ありがとう。 – omat

答えて

2

愚かな推測。

どのユーザーがApacheを実行していますか?

サイトの残りの部分はうまく動作しますが、sqlite dbが到達可能で読み書き可能であることをApacheが実行していることがわかります!

+1

はい、ありがとう!私は、ディレクトリツリー全体のオーナーグループをApacheである 'www-data'に変更しました。私は既にsqliteデータベースファイルに777パーミッションを与えていたのですが、うまくいきませんでした。ありがとう。 – omat

+0

良いニュースを聞いてうれしいです。ファイルが777だったかもしれませんが、パス内の1つ(またはそれ以上)のディレクトリは、Apacheのユーザーがファイルにアクセスできないようにしていました。 –

+4

私はそれが古い質問ですが、完全性のために:python sqliteモジュールは、データベースファイルを含むディレクトリへの書き込みアクセスが必要です。 – Ochoto

1
sudo chown www-data /var/www/yourproject/db.sqlite3 

これはトリック(アパッチにユーザーを設定)

関連する問題