web-dev-qa-db-fra.com

Le pool de connexion n'a pas été incapable d'accorder une connexion au fil

J'utilise Greendao pour la manipulation de la base de données à Android. Lors de l'exécution de nombreuses modifications de la base de données (> 15.000), j'ai reçu ce message d'erreur:

Le pool de connexion pour la base de données '/ Data/Data/...' a été incapable d'accorder une connexion au fil-ci 312 (fil-312) avec des indicateurs 0x1 pendant 30.000002 secondes.

Tout est coincé. Pourquoi cette erreur arrive-t-elle?

30
Basic Coder

Je ne peux pas dire avec certitude de cette implémentation particulière, mais il y a un écoulement de Connection qui convient généralement à une orje. Le pool de connexion ouvre un nombre défini de connexions à la base de données et les recycle lorsque vous les fermez et ouvrez de nouvelles connexions. Ce que cette erreur vous dit, c'est que cela frappa probablement une limite. Cela peut arriver pour une grande variété de raisons, l'une est que, éventuellement, il y a une certaine impasse dans la DB, car vous mettez à jour deux tables et deux transactions différentes contenant différentes tables en attente de l'autre. Ou simplement qu'il y a juste trop de connexions ouvertes et que le pool de db ou de connexion est confus.

Désolé que ce n'est pas vraiment une réponse, mais vous aurez besoin de regarder les docs pour Greendao pour voir comment cela pourrait arriver.

11
Kaediil

J'ai reçu ce message lorsque je souhaite sélectionner une requête sur une table utilisée sur une transaction sans transaction terminée avant. Problème résolu après avoir exécuté endTransaction() sur un bloc de transaction enfin.

34
hkutluay

J'ai reçu ce message lors de la création de trop de connexions sur SQLite via DBFlow Flowquerylist. Ma solution consistait à s'assurer qu'une fois que vous avez terminé avec la liste de requêtes, appelez endTransactionAndNotify(), puis close() sur la requête.

Appelant endTransactionAndNotify() seul n'a pas fait l'affaire. J'espère que cela vous aidera, ce fil m'a certainement aidé.

1
Blaze Gawlik