6
votes

Comment connaissons-nous l'état de verrouillage de SQLite DB?

1) Y a-t-il un pragma ou de tout moyen de connaître le courant État de verrouillage de SQLite dB ?.
2) En outre, est-il un moyen de savoir si un autre processus utilise la DB?.


0 commentaires

3 Réponses :


2
votes

pas de pragma, mais le FAQ états:

Lorsque SQLite tente d'accéder à un fichier verrouillé par un autre processus, le comportement par défaut consiste à renvoyer SQLITE_BUSY.

Toutefois, cela signifie uniquement que la base de données est verrouillée pour écrire, ne pas lire.


0 commentaires

2
votes

Concernant # 1: Non, car la réponse que vous avez obtenue serait immédiatement obsolète (c'est-à-dire si vous avez une réponse de "Non la base de données n'est pas verrouillée", quelqu'un d'autre pourrait venir et le verrouiller immédiatement, vous laissant avec mauvais info).

L'approche correcte consiste simplement à essayer votre opération (éventuellement avec un délai d'attente) et à voir si elle réussit.


1 commentaires

Oh ouais, le délai d'attente est la voie à suivre. J'ai oublié ce peu.



0
votes

Cela n'existait probablement pas en 2011, mais sqlite3_txn_state le fera aujourd'hui: https: / /wwww.sqlite.org/c3ref/txn_state.html

Malheureusement, il ne semble pas y avoir de pragme, qui pose problème parce que la plupart des liaisons de langue SQLite ne lui donnent pas accès.


0 commentaires