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:
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 .... ::) )