2010-10-02 22 views
0

J'ai utilisé avec succès SQLite comme magasin de données pour mes applications Web, mais maintenant j'implémente un site web avec mod_perl, et je suis confronté à des problèmes de verrouillage de base de données.en utilisant SQLite avec mod_perl

Comme prévu, mon application Web entière est chargée par le gestionnaire Plack Apache (Plack :: Handler :: Apache2) lorsque le serveur Web est démarré. Eh bien, la première requête db crée un verrou sur la base de données entière, et toute requête ultérieure qui doit modifier la base de données échoue.

Quelle est ma sortie? Puis-je utiliser SQLite dans un environnement Web persistant ou non? Devrais-je être à la recherche d'un autre magasin db? Je ne suis pas fan de MySQL et je ne veux pas l'utiliser. Je pourrais utiliser PostGres, mais je préférerais utiliser quelque chose de léger, et de préférence basé sur sql car l'utilisation de bases de données de clés/valeurs telles que Tokyo Cabinet nécessiterait une toute nouvelle manière d'apprendre. Je préfère utiliser SQLite.

Répondre

0

Si vous avez un handle ouvert vers la base de données, il peut provoquer ce problème. J'ai eu des problèmes lors de l'itération sur un ensemble de résultats pendant un processus de consignation provoque le blocage de la serrure. Essayez de récupérer toutes les lignes de la requête et appelez le $sth->finish() pour effacer le verrou. Vous utiliserez un peu plus de mémoire, mais vous éviterez le verrouillage.

Sachant que vous allez faire, vous pouvez utiliser $sth->fetchall_arrayref() ou $sth->fetchall_hashref()

0

base de données de table Utiliser Tokyo Cabinet.