Forum > Databases

Aiuto, perdo record

(1/5) > >>

tito_livio:
Buongiorno a tutti,
in un nuovo progetto, ho un database Mysql con diverse tabelle, di tipo MyIsam, alle quali accedono alcuni client, anche una decina, con dei mie programmi.
Il problema è che, circa l'uno percento dei record aggiunti, non vengono poi ritrovati.
Essendo che ci sono tabelle anche con 900.000 record, il problema diventa frequente.
I programmi girano sotto Windows 64 bit e 32 bit, sono compilati per 32 bit con la versione 2.0.6.
Uso i componenti nativi, non quelli Zeos, e il codice che uso per salvare segue questo semplice schema:


--- Codice: ---
          fdm.tesiti.AppendRecord([....]);
          fdm.tesiti.applyupdates(8);
          fdm.lab_anno.transaction.commitretaining;
          fdm.tesiti.Close;
          fdm.tesiti.Open;

--- Termina codice ---

L'argomento 8 della funzione applyupdates è stato inserito per cercare di correggere il problema ma non risolve.
Grazie in anticipo.

DragoRosso:
Ciao, premettendo che non conosco MySql così bene da poterti dare una mano concreta, ti chiedo comunque alcune info:

1) Hai detto che ci sono diversi client, come comunicano i client con il database ?

2) Perchè non hai aggiornato almeno ad una versione più recente Lazarus e FPC ?

Il fatto che usi commitretaining mi fà sorgere un dubbio: MySql server non supporta più transazioni contemporanee sulla stessa connessione, e commitretaining lascia aperta la transaction .... Se la usi con i Thread o su più Tabelle contemporaneamente, forse quello è il problema.

Ciao
Magari sbaglio ....

tito_livio:
Ciao,
i vari client accedono, in rete locale, al database tramite le librerie native Lazarus.
Non ho aggiornato ancora Lazarus perché pensavo fosse un errore mio e perché spesso ci sono dei problemi di compatibilità fra vecchie e nuove versioni.
A questo punto però è una prova che farò.
Per quanto riguarda le transaction, credo che non sia quello il problema perché il motore Mysql utilizzato è Myisam che non gestisce le transazioni. 
Proverò quindi con una versione aggiornata di lazarus e vedremo.
Grazie.

tito_livio:
Aggiungo, una cosa che ho ricordato adesso, che potrebbe aiutare a chiarire la situazione.
La stessa cosa mi succedeva con un vecchio progetto in Delphi3 che accedeva a Mysql con gli ODBC.

DragoRosso:

--- Citazione da: tito_livio - Agosto 08, 2022, 03:18:54 pm ---Aggiungo, una cosa che ho ricordato adesso, che potrebbe aiutare a chiarire la situazione.
La stessa cosa mi succedeva con un vecchio progetto in Delphi3 che accedeva a Mysql con gli ODBC.

--- Termina citazione ---

Bhè Delphi3 con ODBC .... eravamo all'alba di un nuovo impero (e nel film sono tutti morti ....  ::) )

Navigazione

[0] Indice dei post

[#] Pagina successiva

Vai alla versione completa