web-dev-qa-db-fra.com

python sqlite3 OperationalError: tentative d'écriture d'une base de données en lecture seule

J'essaie d'exécuter un service Flask REST sur CentOS Apache2 à l'aide de WSGI. Le service REST nécessite un très petit stockage) . J'ai donc décidé d'utiliser SQLite avec sqlite3 python. L'ensemble de l'application fonctionnait parfaitement sur mon système local et sur le serveur CentOS lorsqu'elle était exécutée à l'aide de app.run(). Mais quand j'ai utilisé WSGI pour héberger l'application sur Apache, je reçois

OperationalError: attempt to write a readonly database

J'ai vérifié les autorisations du fichier. L'utilisateur et le groupe du fichier sont définis sur Apache (sous lequel le serveur fonctionne) à l'aide de chown et chgrp. En outre, le fichier dispose de l'autorisation rwx. Je reçois toujours une erreur de base de données en lecture seule. Voici ce que j'obtiens en exécutant ls -al Sur le fichier db:

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

Ma configuration 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
Shivaprasad Bhat

En plus de modifier les autorisations du fichier de base de données, vous devez également modifier les autorisations pour le répertoire qui héberge le fichier de base de données. Vous pouvez essayer la commande suivante:

chmod 664 /path/to/your/directory/

Vous pouvez également changer le propriétaire du répertoire comme suit:

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

Ce qui a fonctionné pour moi (je n'ai pas Sudo) a été de supprimer le fichier de base de données et toutes les migrations et de recommencer, comme décrit ici: Comment puis-je supprimer la base de données (sqlite3) dans Django = 1.9 pour repartir de zéro?

0
Matthew Kaye