mercoledì 13 dicembre 2017

Risolvere errore: mysql odbc got a packet bigger than max_allowed_packet

La connessione tra access e mysql spiegata pochi giorni fa, come immaginavo, ha portato alla creazione di diversi post risolutivi di problemi vari :)
Oggi è venuto il momento di parlare del seguente errore: "mysql odbc got a packet bigger than max_allowed_packet", che altri non è che il dettaglio un errore di operazione update non riuscita su tabella..., errore che poteva anche essere riferito ad un'operazione di Insert.

Ma cosa ho provato a fare per ottenere questo fastidioso messaggio di errore?
Semplice, ho provato a salvare un file allegato su un database mysql, passando dalle maschere di access.

Vediamo dunque come sistemare questa ennesima problematica di compatibilità tra access e mysql... se così si può dire.

mysql odbc got a packet bigger than max_allowed_packet


Come risolvere l'errore: mysql odbc got a packet bigger than max_allowed_packet


Per poter caricare dei file in un database mysql passando da una maschera di microsoft access, occorre innanzitutto essere sicuri che il campo nel database sia sufficientemente grande.
Ad esempio, se il nostro allegato è molto grande, il normale campo blob potrebbe non bastare, quindi occorre creare un campo long blob in mysql.

Allargando le dimensioni del campo del db mysql, da blob a longblob, già si risolvono eventuali problemi di dimensioni massima dei file caricabili, errori che possono dare come risultato su access, un bel errore: "odbc lost connection to mysql server during query", o "mysql server has gone away", oppure ancora, il terribile errore "odbc chiamata non riuscita".

C'è però un'altro parametro che occorre settare/controllare, affinchè non ci siano problemi di caricamento di file pesanti da access a mysql, e si tratta del my.ini, ovvero il file di configurazione di mysql.
Come indicato in un precedente post infatti, l'azione risolutiva è quella di modificare/aggiungere le seguenti linee di codice nel my.ini:

max_allowed_packet = 16M
wait_timeout = 6000


Ora, il 16 mega è un valore indicativo, potrebbe anche non bastare per voi, quindi settate pure il valore più opportuno in base ai file da caricare.
Il timeout invece serve per evitare che la lentezza di connessione possa inficiare negativamente sull'esito dell'operazione.
Tutto ciò, su wamp si trova nella sezione [wampmysqld64], altrimenti la sezione suppongo possa chiamarsi semplicemente [mysqld].

Bene, direi che è tutto.
Spero non insorgano altri problemi nell'utilizzo di mysql da access, altrimenti temo che si faccia prima a sviluppare una bella interfaccia web personalizzata al posto del prodotto della Microsoft :)

Piaciuto l'articolo? Lascia un commento!

EmoticonEmoticon