sql >> Databáze >  >> RDS >> Mysql

SQLSTATE[42000]:Chyba syntaxe nebo porušení přístupu:1055 Výraz #3 seznamu SELECT není v klauzuli GROUP BY a obsahuje neagregovaný

Spustit:

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

(Poté volitelně zkopírujte výstup někam do poznámek pro případ, že byste se později chtěli vrátit k původnímu nastavení.)

A změňte režim SQL pro vaši instanci serveru MySQL:

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

(Pokud se někdy budete chtít vrátit zpět, můžete spustit něco jako 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'; pomocí hodnoty, kterou jste uložili.)

Trvalejším způsobem (který přežije restartování MySQL) by bylo použití konfigurací MySQL. Přejděte na /etc/mysql/my.cnf (nebo možná budete muset spustit sudo vim /etc/mysql/mysql.conf.d/mysql.cnf ):

  • Přidejte sekci pro [mysqld] a hned pod něj přidejte příkazsql_mode ="" nebo něco jako sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION" .

  • Restartujte službu MySQL:

     sudo systemctl restart mysql
    

(nebo restart služby sudo mysql )

Viz také https://dba.stackexchange.com/a/113153/18098



  1. SQL Vyberte pouze řádky, kde existuje přesný vícenásobný vztah

  2. Spouštěč MySQL nemůže aktualizovat tabulku – získává ERROR 1442

  3. Jak mohu vložit 10 milionů záznamů v co nejkratším čase?

  4. Jak získat ID z databáze po kliknutí na položku listview v Androidu