Changer le mode de firebase database SQLite en lecture-écriture

Comment puis-je changer une firebase database SQLite de lecture seule en lecture-écriture?

Lorsque j’ai exécuté la déclaration de mise à jour, j’ai toujours:

Erreur SQL: tentative d’écriture d’une firebase database en lecture seule

Le fichier SQLite est un fichier accessible en écriture sur le système de fichiers.

Plusieurs raisons peuvent expliquer ce message d’erreur:

  • Plusieurs processus ont la firebase database ouverte en même temps ( voir la FAQ ).

  • Il existe un plugin pour compresser et chiffrer la firebase database. Il ne permet pas de modifier la firebase database.

  • Enfin, une autre FAQ dit: “Assurez-vous que le répertoire contenant le fichier de firebase database est également accessible en écriture à l’utilisateur exécutant le script CGI.” Je pense que c’est parce que le moteur doit créer plus de fichiers dans le répertoire.

  • L’ensemble du système de fichiers peut être en lecture seule, par exemple après un plantage.

  • Sur les systèmes Unix, un autre processus peut remplacer le fichier entier.

Si vous utilisez Android

Assurez-vous d’avoir ajouté l’autorisation d’écrire sur votre AndroidManifest.xml EXTERNAL_STORAGE sur votre AndroidManifest.xml .

Ajoutez cette ligne à votre fichier AndroidManifest.xml au-dessus et en dehors de votre .

  

Cela permettra à votre application d’écrire sur la carte SD. Cela aidera si votre EXTERNAL_STORAGE est l’endroit où vous avez stocké votre firebase database sur le périphérique.

J’ai résolu ce problème en changeant le propriétaire de root en moi sur tous les fichiers sur / db dir.

Il suffit de faire ls -l sur ce dossier, si l’un des fichiers appartenant à root appartient simplement à vous, en utilisant: sudo chown user file

Dans le shell de commandes Linux, j’ai fait:

 chmod 777  

Où contient le fichier de firebase database.

Ça marche. Maintenant, je peux accéder à ma firebase database et faire des requêtes d’insertion.

J’ai eu ce problème aujourd’hui aussi.

Il a été provoqué par ActiveSync sur Windows Mobile – le dossier dans lequel je travaillais a été synchronisé. Le processus AS a donc saisi le fichier de base de temps en temps, provoquant cette erreur.

Cette erreur se produit généralement lorsque votre application est déjà accessible par une firebase database et que vous essayez d’y accéder avec une autre firebase database.

Depuis la ligne de commande, entrez le dossier où se trouve votre fichier de firebase database et exécutez la commande suivante:

 chmod 777 databasefilename 

Cela accordera toutes les permissions à tous les utilisateurs.

Sous Linux, accordez des permissions de lecture / écriture sur l’intégralité du dossier contenant le fichier de firebase database.

En outre, SELinux peut bloquer l’écriture. Vous devez définir les permissions correctes.

Dans mon interface graphique de gestion SELinux (sur Fedora 19), j’ai coché la case sur la ligne intitulée httpd_unified (traitement HTTP Unify de tous les fichiers de contenu), et j’étais prêt à partir.

Sous Windows:

tl; dr: Essayez à nouveau d’ouvrir le fichier.

Notre système souffrait de ce problème, et ce n’était certainement pas un problème d’permissions, car le programme lui-même serait capable d’ouvrir la firebase database en écriture à partir de plusieurs threads la plupart du temps, mais occasionnellement (uniquement sous Windows, pas sous OSX). un thread obtiendrait ces erreurs même si toutes les autres threads du programme ne rencontraient aucune difficulté.

Nous avons finalement découvert que les threads qui échouaient n’étaient que ceux qui essayaient d’ouvrir la firebase database immédiatement après qu’un autre thread l’ait fermée (moins de 3 ms). Nous avons supposé que le problème était dû au fait que Windows (ou l’implémentation sqlite sous Windows) ne nettoie pas toujours immédiatement les ressources des fichiers lors de la fermeture d’un fichier. Nous avons contourné cela en exécutant une requête en écriture de test sur la firebase database lors de son ouverture (par exemple, en créant puis en déposant une table avec un nom idiot). Si la création / suppression a échoué, nous avons attendu 50 ms et essayé à nouveau, en répétant jusqu’à ce que nous réussissions ou 5 secondes plus tard.

Ça a marché; apparemment, il fallait juste assez de temps pour que les ressources soient dissortingbuées sur le disque.

Dans le chemin du projet Terminal django_project #

 sudo chown django:django * 

(ce message d’erreur est généralement trompeur et constitue généralement une erreur d’autorisation générale)

Sous Windows

  • Si vous émettez du code SQL directement sur la firebase database, assurez-vous que l’application que vous utilisez pour exécuter le SQL fonctionne en tant qu’administrateur
  • Si une application tente la mise à jour, le compte utilisé pour accéder à la firebase database peut nécessiter des permissions sur le dossier contenant votre fichier de firebase database. Par exemple, si IIS accède à la firebase database, l’IUSR et IIS_IUSRS peuvent tous deux avoir besoin d’permissions appropriées (vous pouvez essayer ceci en donnant temporairement à ces comptes un contrôle total sur le dossier, en vérifiant si cela fonctionne)

Editez la firebase database: j’avais des problèmes pour éditer la firebase database. J’ai fini par devoir
sudo chown ‘nom d’utilisateur non root’ ts3server.sqlitedb
tant que ce n’était pas root, je pourrais éditer le fichier. Le nom d’utilisateur est le nom d’utilisateur de mon compte non root.

Démarrage automatique de TeamSpeak: comme votre compte non root
crontab -e
@reboot / path pour ts3server / aka /home/ts3server/ts3server_startscript.sh start

Sur Ubuntu, remplacez le propriétaire par le groupe Apache et accordez les permissions appropriées (non, ce n’est pas le 777):

 sudo chown :www-data  sudo chown 664