sql >> Databasteknik >  >> RDS >> Mysql

SQLSTATE[42000]:Syntaxfel eller åtkomstöverträdelse:1055 Uttryck #3 i SELECT-listan finns inte i GROUP BY-satsen och innehåller icke-aggregerad

Kör:

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

(Kopiera sedan eventuellt utdata till dina anteckningar någonstans ifall du vill återgå till de ursprungliga inställningarna senare.)

Och ändra SQL-läget för din MySQL-serverinstans:

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

(Om du någonsin vill gå tillbaka kan du köra något som 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'_SUBSTI> med värdet du sparat.)

Ett mer permanent sätt (som kommer att överleva omstarter av MySQL) skulle vara att använda MySQL-konfigurationerna. Gå till /etc/mysql/my.cnf (eller så kan du behöva köra sudo vim /etc/mysql/mysql.conf.d/mysql.cnf ):

  • Lägg till en sektion för [mysqld] och precis under den lägg till uttalandetsql_mode ="" eller något som sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION" .

  • Starta om MySQL-tjänsten:

     sudo systemctl restart mysql
    

(eller sudo service mysql omstart )

Se även https://dba.stackexchange.com/a/113153/18098



  1. MySQL kartesisk produkt mellan två SELECT-satser

  2. SQL ORDER BY flera kolumner

  3. Databashårdvara och infrastrukturtrender

  4. SINH() Funktion i Oracle