Alcuni giorni fa ho deciso di aggiornare i driver ODBC andando incontro a non pochi mal di testa ... segue una breve descrizione delle rogne avute.
Questa è la situazione di partenza funzionante :
- Server MariaDB 10.5.16 installato in OpenSUSE 15.3
- ODBC Driver MySQL 8.0.26 32 bit oppure ODBC Driver MariaDB 3.1.13 bit
- Access 2013 32 bit installato in Win10
Pur avendo un server MariaDB preferisco usare i driver ODBC MySQL in quanto hanno il supporto completo ai multistatements che non c'è con i driver MariaDB, comunque la mia applicazione in Access funziona con entrambi i driver.
Decido di aggiornare i drivers passando a :
- ODBC Driver MySQL 8.0.29
- ODBC Driver MariaDB 3.1.16
La prima cosa evidente utilizzando i nuovi driver MySQL è l'impossibilità di effettuare aggiornamenti, come se il DB fosse in read-only. Poco male mi dico, in fondo utilizzo un server MariaDB tanto vale usare i suoi driver ...
Passo all'uso dei driver di MariaDB e tutto pare funzionare per alcuni giorni fino a quando non decido di fare il rollback di una transazione : nulla avviene !
Trattandosi di Access e di un utilizzo non proprio consono (ovvero per riuscire a far funzionare le transazioni utilizzando maschere/sottomaschere associate ho dovuto penare molto con il codice) il mio primo pensiero è stato indirizzato verso un mio baco sw.
Il debug non mi portava da nessuna parte :
- il rollback veniva eseguito (nel senso che l'istruzione veniva eseguita ma non produceva alcun effettivo rollback dei dati) senza segnalare alcun errore
- forzare un ulteriore rollback generava l'errore aspettato (ovvero che la transazione non era stata avviata e confermando implicitamente che il precedente rollback aveva effettivamente chiuso la transazione)
Dopo alcune ore di analisi del codice, di ricerche infruttuose in rete e di aver persino dubitato di aver mai visto funzionare le transazioni mi sono ricordato dell'aggiornamento dei driver ODBC !
Questo è il finale : ripristinato i driver precedenti e tutto è ritornato a funzionare ...
Avendo a che fare con 3 prodotti distinti (Access, drivers ODBC e server RDBMS) non posso neanche affermare con estrema facilità e sicurezza che si tratti di un bug nei drivers (sebbene appaia come tale).