sql >> Base de Datos >  >> RDS >> Mysql

SQLSTATE[42000]:Error de sintaxis o infracción de acceso:1055 La expresión n.° 3 de la lista SELECT no está en la cláusula GROUP BY y contiene

Ejecutar:

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

(Luego, opcionalmente, copie la salida a sus notas en algún lugar en caso de que desee volver a la configuración original más adelante).

Y cambiar el modo SQL para su instancia de servidor MySQL:

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

(Si alguna vez desea retroceder, puede ejecutar 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 el valor que guardó).

Una forma más permanente (que sobrevivirá a los reinicios de MySQL) sería usar las configuraciones de MySQL. Vaya a /etc/mysql/my.cnf (o puede necesitar ejecutar sudo vim /etc/mysql/mysql.conf.d/mysql.cnf ):

  • Agregue una sección para [mysqld] y justo debajo agrega la instrucción sql_mode = "" o algo como sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION" .

  • Reinicie el servicio MySQL:

     sudo systemctl restart mysql
    

(o sudo service mysql restart )

Consulte también https://dba.stackexchange.com/a/113153/18098