Mysql
 sql >> Database >  >> RDS >> Mysql

SQLSTATE[42000]:Errore di sintassi o violazione di accesso:1055 L'espressione n. 3 dell'elenco SELECT non è nella clausola GROUP BY e contiene non aggregati

Corri:

sudo mysql -u root -p
mysql> SELECT @@global.sql_mode;

(Poi, facoltativamente, copia l'output nelle tue note da qualche parte nel caso in cui desideri ripristinare le impostazioni originali in un secondo momento.)

E cambia la modalità SQL per la tua istanza del server MySQL:

mysql> SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

(Se vuoi tornare indietro, puoi eseguire qualcosa come mysql> SET GLOBAL sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'; utilizzando il valore che hai salvato.)

Un modo più permanente (che sopravviverà al riavvio di MySQL) sarebbe usare le configurazioni di MySQL. Vai a /etc/mysql/my.cnf (o potrebbe essere necessario eseguire sudo vim /etc/mysql/mysql.conf.d/mysql.cnf ):

  • Aggiungi una sezione per[mysqld] e subito sotto aggiungi l'istruzionesql_mode = "" o qualcosa come sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION" .

  • Riavvia il servizio MySQL:

     sudo systemctl restart mysql
    

(o sudo service mysql restart )

Vedi anche https://dba.stackexchange.com/a/113153/18098