Dopo aver lavorato in locale con MySQL è chiaramente necessario portare il database da locale a online/remoto.
Questa procedura avviene tramite export del database locale (ad esempio con MYSQL Workbench) e poi importazione in remoto sul server online tramite procedura in PHPMyAdmin. La procedura di per sè è molto semplice in quanto l’interfaccia web chiede pochissime informazioni durante l’import.
Può succedere però che per motivi di versioni di MySQL, il database venga importato correttamente ma in un formato incompatibile con le chiamate SQL che si eseguono con l’applicativo (spesso riguardanti nomi e funzione di LIKE).
L’errore ritornato però, investigando nel log dell’applicativo, è del tutto generico:
Invalid attempt to access a field before calling Read()
La connessione al database sembra funzionare ed essere inizializzata correttamente ma la lettura fallisce indicando quell’errore (che tra l’altro riguarda problemi sulle stringhe e troverete online e su Stackoverflow miriadi di esempi).
La soluzione sta nel formato di compatibilità del database importato.
Per risolvere è necessario “droppare” tutte le tabelle del DB (non state a ricostruire il database da zero) e reimportare con PHPMyAdmin il database avendo cura di selezionare l’opzione “SQL compatibility mode” uguale a “MYSQL40” (e non lasciare l’opzione di default).