Condividi
Errore: SELECT list is not in GROUP BY clause and contains nonaggregated column - fix
Dopo essere passato alla versione 5.7 di MySql, ricevo il seguente messaggio di errore:
SELECT list is not in GROUP BY clause and contains nonaggregated column
non appena eseguo una query contenente la clausola GROUP BY, preciso che la stessa identica query lanciata con la versione precedente di MySql non mi dava quest'errore, come mai accade questo? E come posso risolvere? Grazie.
In Corso
3
MySql
09-09-2019
2 Risposte
3385 Visite
0
Risposte ( 2 approvate )
Puoi disabilitare l'impostazione
only_full_group_by
eseguendo le seguenti impostazioni:questo ti consentirà di risolvere l'errore
SELECT list is not in GROUP BY clause and contains nonaggregated column
.L'errore:
SELECT list is not in GROUP BY clause and contains nonaggregated column
si manifesta nellaversione MySql 5.7 in base alle impostazioni di modalità di esecuzione del server di Database MySql che opera inSTRICT_MODE
ed in questo particolare caso anche inonly_full_group_by
, mentre le versioni precedenti erano impostate di default diciamo in una modalità più elastica o permissiva se preferisci.Sovente con questo errore si è soliti ricevere anche il messaggio:
in aggregated query without group by expression #2 of select list contains nonaggregated column
che ti sta dicendo che nella clausola GROUP BY della tua SELECT contiene una (o più) colonna (campo) che non è adatta ad essere trattata come tipo aggregato.Per risolvere questo problema devi aggiungere o rimuovere alla tua GROUP BY tutte quelle colonne previste nella SELECT di tipo aggregato, proprio perché Mysql per come impostato lavora in modalità
only_full_group_by
.Oppure devi andare nelle impostazioni avanzate di MySql e cambiare la modalità di esecuzione settando:
a livello globale, oppure per singola sessione (lanciando la seguente query prima della SELECT) in questo modo:
in questo modo disabiliterai la modalità STRICT (applicata anche su altri elementi) ed anche la ONLY FULL GROUP BY.