database table is locked

Imprimer
PDF
Si vous ecrivez un programme un tant soit peu complexe en PHP en utilisant PDO et SQLite3, vous avez certainement été confronté à ce problème.
Une erreur du type : 'database table is locked'

Avec PDO il faut absolument vider les résultats d'une requête.
Si par exemple, vous exécuter une requête de sélection dont le résultat contient 15 lignes, tant que vous ne récuperez pas toutes ces lignes la table est 'locked'.

Pour eviter ce problème, il y a deux solutions :
- La première consiste utiliser uniquement 'fetchAll' pour récuperer les résultats.
$res = $connId->query('SELECT * FROM database;');
$tabResult = $res->fetchAll();


- La deuxièmes, qui est utilisé dans SQLiteManager 1.2.0!! ; avant d'éxecuter une nouvelle requête, on verifie si l'object résultat existe, et dans ce cas on éxecute 'closeCursor' sur celui-ci
if(is_object($res)) $res->closeCursor();

 

Ajouter un Commentaire


Code de sécurité
Rafraîchir

database table is locked - SQLiteManager
Facebook MySpace Twitter Digg Delicious Stumbleupon Google Bookmarks 

Auteur

SQLiteManager est maintenant géré par la société WebInfoPro afin de refaire vivre ce projet tout en restant sous licence GPL

Contact

Vous pouvez nous contacter par email sur sqlitemanager@gmail.com

Qui est en ligne?

Nous avons 96 invités en ligne