Messaggio “Unknown column a.note in field list”

Questo è senz’altro uno di quei messaggi di errore di Joomla che, quando appaiono, ci si domanda “Che ho combinato per ottenere questo errore? E ora che faccio?”. Considerato che praticamente a tutto (o quasi) c’è una soluzione, vediamo come ovviare a questo problema.

Premetto che mi è capitato di vedere questo messaggio di errore sul sito di un cliente e che Joomla non era molto aggiornato. Infatti il cms era fermo alla versione 3.9.24. Va bene che “squadra che vince non si cambia” ma, dato che ad oggi siamo alla versione 4.0.5, sarebbe meglio aggiornare almeno alla versione 3.10.x.

Fatta questa premessa, come prima operazione, sono andato a verificare l’error_log ma senza trovare errori o segnalazioni di anomalie. Ho fatto l’accesso al backend e poi sul menù a tendina “Estensioni” -> “Gestione” -> “Database”. Ho cliccato su “Fix database” in alto a sinistra ed è comparso il seguente messaggio a video:

1118 Row size too large. The maximum row size for the used table type, not counting BLOBs, is 8126. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs

Row size? BLOBs? Senza andare troppo nel dettaglio, per effettuare il cambio segnalato nell’errore, bisogna utilizzare l’interfaccia phpMyAdmin ed eseguire query seguente:

SELECT CONCAT(‘ALTER TABLE ',t.table_schema,'.',t.table_name,' ROW_FORMAT=DYNAMIC;’) AS stmt
FROM information_schema.tables t
WHERE ROW_FORMAT != “Dynamic” AND t.table_schema != “information_schema”;

Le operazioni sul database sono quasi sempre molto delicate e quindi, se hai anche solo il minimo dubbio su come operare, ti consiglio di chiedere questa operazione al tuo hosting provider. Potranno fare un backup del database e questa modifica nel giro di pochi minuti.

A questo punto ho eseguito un nuovo fix del database e questa volta ho ricevuto il messaggio “La struttura delle tabelle del Database è aggiornata.”. Il cliente ha potuto accedere nuovamente alla sezione degli articoli e lavorare senza alcuna difficoltà.