Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

SQLSTATE[42000]:Erro de sintaxe ou violação de acesso:1055 A expressão nº 3 da lista SELECT não está na cláusula GROUP BY e contém não agregada


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

(Em seguida, opcionalmente, copie a saída para suas notas em algum lugar, caso você queira reverter para essas configurações originais posteriormente.)

E alterar o modo SQL para sua instância do servidor MySQL:
mysql> SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

(Se você quiser reverter, você pode executar algo como 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'; usando o valor que você salvou.)

Uma maneira mais permanente (que sobreviverá a reinicializações do MySQL) seria usar as configurações do MySQL. Vá para /etc/mysql/my.cnf (ou pode ser necessário executar sudo vim /etc/mysql/mysql.conf.d/mysql.cnf ):

  • Adicione uma seção para[mysqld] e logo abaixo adicione a instruçãosql_mode = "" ou algo como sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION" .

  • Reinicie o serviço MySQL:
     sudo systemctl restart mysql
    

(ou sudo service mysql restart )

Consulte também https://dba.stackexchange.com/a/113153/18098