Enable to open database....

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
omega
Messages : 626
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

Enable to open database....

Message par omega »

Bonsoir à tous,
Le message est clair mais ce que je ne comprends pas c'est que ce message s'affiche de temps en temps d'une manière bizarre... et pas à chaque fois sinon ça m'aurait facilité la tâche pour porter les corrections... De quoi s'agit il puisque la base de données est bel et bien ouverte convenablement sans problème, autrement, c'est à dire si la base n'était pas ouverte, ce message s'affiche à chaque fois que je lance mon programme et non pas DE TEMPS EN TEMPS...
Y a t il d'autres raisons pour lesquels ce message s'affiche?
Je travaille tous les jours avec ce programme et le message s'affiche irrégulièrement (4 jours après, 1 semaine, parfois un mois après, parfois 3 fois par jours... INCROYABLE MAIS VRAI ! Pourtant je n'ai rien changé au programme...
Voici les parties du code où ce message s'affiche

Code : Tout sélectionner

Idbl=0
Dbs$ = "Data\bl.db"
If Not OpenDatabase(Idbl, Dbs$, "", "")
   MessageRequester("Info", "Ouverture " + Dbs$ + " impossible!")
   End
EndIf
.....
..... ; plus loin...
.....
;Enregistrer le bl
sql="SELECT * FROM fbl where numdoc=" + Chr(34) + numdoc$ + Chr(34)
CheckDatabaseQuery(idbl,sql)
If NextDatabaseRow(idbl)
   sql= "Update fbl set "
   sql+ " datedoc="   + Chr(34) + date$       + Chr(34) + ","   
   sql+ " datenum="  + Chr(34) + datenum$ + Chr(34) + ","   
   sql+ " codeCF="    + Chr(34) +  codeCF$   + Chr(34) + " "   
   sql+ " where numdoc=" + Chr(34) + numdoc$ + Chr(34)
   CheckDatabaseUpdate(idbl,sql)
Endif
**** LE MESSAGE D'ERREUR INDIQUE CETTE LIGNE >>[color=#FF0080] Enable de open Database ... Update fbl set ...[/color] ect..


A signaler que cette partie de mise à jour de la table (FBL) marche dans la plupart des cas (environ à 90%) plusieurs enregistrements ont été mis à jour correctement...


Merci de votre aide
Win7 (x64) 64 bits Pb 5.72
Marc56
Messages : 2147
Inscription : sam. 08/févr./2014 15:19

Re: Enable to open database....

Message par Marc56 »

Ta procédure CheckDatabaseQuery() se termine bien par un FinishDatabaseQuery(#Database) ?
Faute de quoi au bout d'un certain nombre de requêtes, ton nombre d'accès concomitants est atteint.
Avatar de l’utilisateur
microdevweb
Messages : 1800
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Enable to open database....

Message par microdevweb »

A mon avis essayé de mettre à jour la Bd dans une boucle qui lit la Bd et avec la même occurrence n'est pas idéal et tu doit certainement avoir le message "database is locked"

Solution ? Ouvrir une nouvelle instance de la base de donnée avec OpenDatabase dans ta procédure CheckDatabaseUpdate
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
omega
Messages : 626
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

Re: Enable to open database....

Message par omega »

Bonjour
Ta procédure CheckDatabaseQuery() se termine bien par un FinishDatabaseQuery(#Database) ?
Non, je n'ai jamais utilisé FinishDatabaseQuery() car le programme a été développé sou Pb 4, il y a longtemps, je viens juste de le mettre à niveau (Pb5.62), il marche bien sans cette instruction (FinishDatabaseQuery).
Merci
Win7 (x64) 64 bits Pb 5.72
Marc56
Messages : 2147
Inscription : sam. 08/févr./2014 15:19

Re: Enable to open database....

Message par Marc56 »

https://www.purebasic.com/french/docume ... story.html

16 Décembre 2008 : Version 4.30

- Ajouté: FinishDatabaseQuery(), DatabaseID()

Si ça a été ajouté, c'est qu'il y a une raison, donc commence par là, ce n'est qu'une seule ligne à ajouter.

Si tu recompiles un programme vieux de 10 ans (et oui PB 4 = 2008) avec le compilateur actuel et qu'il y a des "erreurs", il faut prendre en compte les modifications effectuées depuis dans le compilateur lui-même.

Et tant qu'à mettre à jour, profite pour remplacer les multiples quotes par SetDatabase(string, double etc...). Tu n'auras plus à te soucier des caractères bizarres qui peuvent engendrer des erreurs

Les messages d'erreurs "systématiquement aléatoires" c'est à 99.9% une erreur de codage.
Si tu voyais le monitoring en temps réel d'un serveur de base de données: c'est effrayant ce que ça produit les applications codées sans libération de ressources.
Avatar de l’utilisateur
omega
Messages : 626
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

Re: Enable to open database....

Message par omega »

Mais pourquoi je n'ai pas eu d'erreur au niveau compilation sans FinishDatabaseQuery?
De toute façon, je vais corriger et tester et attendre au moins 48 heures pour voir si le message réapparait.
Merci Marc pour cette information.
Win7 (x64) 64 bits Pb 5.72
Avatar de l’utilisateur
microdevweb
Messages : 1800
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Enable to open database....

Message par microdevweb »

Il ne s'agit pas d'une erreur de compilation. Tu aurais exactement la même erreur avec avec java. Sqlite ne digère pas un update sur une base de données ouverte et qui à reçu une requête query.
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
omega
Messages : 626
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

Re: Enable to open database....

Message par omega »

Il ne s'agit pas d'une erreur de compilation. Tu aurais exactement la même erreur avec avec java. Sqlite ne digère pas un update sur une base de données ouverte et qui à reçu une requête query.
Tu veux dire qu'il faut d'abord fermer le Query avant d'utiliser Update? (C'est à dire utiliser FinishDatabaseQuery()?)
Win7 (x64) 64 bits Pb 5.72
Marc56
Messages : 2147
Inscription : sam. 08/févr./2014 15:19

Re: Enable to open database....

Message par Marc56 »

Oui, car depuis SQLite 3.7 (2012), toutes les requêtes en update se font automatiquement dans une transaction et les transactions en SQLite ne peuvent êtres imbriquées

Explication:
https://www.sqlite.org/lang_transaction.html
poshu
Messages : 1138
Inscription : sam. 31/juil./2004 22:32

Re: Enable to open database....

Message par poshu »

Wow, très bon lien ça, merci Marc566!
Avatar de l’utilisateur
omega
Messages : 626
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

Re: Enable to open database....

Message par omega »

Merci à tous

@Marc56: le lien est très utile! Merci beaucoup
Win7 (x64) 64 bits Pb 5.72
Répondre