Mysql
 sql >> Datenbank >  >> RDS >> Mysql

SQLSTATE[42000]:Syntaxfehler oder Zugriffsverletzung:1055 Ausdruck Nr. 3 der SELECT-Liste befindet sich nicht in der GROUP BY-Klausel und enthält nicht aggregierte Werte

Ausführen:

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

(Kopieren Sie dann optional die Ausgabe irgendwo in Ihre Notizen, falls Sie später zu diesen ursprünglichen Einstellungen zurückkehren möchten.)

Und ändere den SQL-Modus für Ihre MySQL Server-Instanz:

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

(Wenn Sie jemals einen Rollback durchführen möchten, können Sie etwas wie 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'; ausführen mit dem Wert, den Sie gespeichert haben.)

Ein dauerhafterer Weg (der Neustarts von MySQL überlebt) wäre die Verwendung der MySQL-Konfigurationen. Gehen Sie zu /etc/mysql/my.cnf (oder Sie müssen möglicherweise sudo vim /etc/mysql/mysql.conf.d/mysql.cnf ausführen ):

  • Fügen Sie einen Abschnitt für [mysqld] hinzu und direkt darunter die Anweisung sql_mode = "" hinzufügen oder etwas wie sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION" .

  • Starten Sie den MySQL-Dienst neu:

     sudo systemctl restart mysql
    

(oder sudo service mysql restart )

Siehe auch https://dba.stackexchange.com/a/113153/18098