web-dev-qa-db-ja.com

python sqlite3 OperationalError:読み取り専用データベースに書き込もうとしました

Flask REST WSGIを使用するCentOS Apache2のサービスを実行しようとしています。RESTサービスには非常に小さなストレージが必要です。したがって、SQLiteを_sqlite3_ pythonパッケージで使用することにしました。app.run()を使用して実行すると、アプリケーション全体がローカルシステムとCentOSサーバーで完全に機能しました。しかし、WSGIを使用してApacheでアプリケーションをホストすると、

_OperationalError: attempt to write a readonly database
_

ファイルの権限を確認しました。ファイルのユーザーとグループは、chownおよびchgrpを使用してApache(サーバーが実行されている)に設定されます。また、ファイルにはrwx権限があります。それでも、読み取り専用のデータベースエラーが発生します。以下は、dbファイルで_ls -al_を実行して得られるものです。

_-rwxrwxrwx. 1 Apache apache 8192 Nov 19 01:39 dbfile.db
_

私のApache設定:

_<VirtualHost *>
ServerName wlc.Host.com

WSGIDaemonProcess wlcd
WSGIScriptAlias / /var/www/html/wlcd.wsgi
RewriteEngine on
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]
<Directory /var/www/html/>
    WSGIProcessGroup wlcd
    WSGIApplicationGroup %{GLOBAL}
    Order deny,allow
    Allow from all
    Require all granted
</Directory>
_
11

データベースファイルの権限を変更するだけでなく、データベースファイルをホストするディレクトリの権限も変更する必要があります。次のコマンドを試すことができます。

chmod 664 /path/to/your/directory/

次のように、ディレクトリの所有者を変更することもできます。

chown Apache:apache /path/to/your/directory/
12
ettanany

ここで説明されているように、私にとってはうまくいきました(私はSudoを持っていません)、データベースファイルとすべての移行を削除し、再び開始しました: Django 1.9はゼロから始めますか?

0
Matthew Kaye