Looking for mysql Answers? Try Ask4KnowledgeBase
Looking for mysql Keywords? Try Ask4Keywords

MySQLError 1055: ONLY_FULL_GROUP_BY: algo no está en la cláusula GROUP BY ...


Introducción

Recientemente, las nuevas versiones de los servidores MySQL han comenzado a generar 1055 errores para las consultas que solían funcionar. Este tema explica esos errores. El equipo de MySQL ha estado trabajando para retirar la extensión no estándar a GROUP BY , o al menos para dificultar que los desarrolladores de escritura de consultas se quemen con ella.

Observaciones

Durante mucho tiempo, MySQL ha contenido una extensión notoriamente no estándar de GROUP BY , que permite un comportamiento extraño en nombre de la eficiencia. Esta extensión ha permitido que innumerables desarrolladores de todo el mundo usen GROUP BY en el código de producción sin entender completamente lo que estaban haciendo.

En particular, es una mala idea usar SELECT * en una consulta GROUP BY , porque una cláusula GROUP BY estándar requiere enumerar las columnas. Muchos desarrolladores, lamentablemente, lo han hecho.

Lee esto. https://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html

El equipo de MySQL ha estado tratando de solucionar este error sin arruinar el código de producción. sql_mode un indicador sql_mode en 5.7.5 llamado ONLY_FULL_GROUP_BY para obligar al comportamiento estándar. En una versión reciente, activaron esa bandera de forma predeterminada. Cuando actualizó su MySQL local a 5.7.14, la bandera se encendió y su código de producción, dependiendo de la extensión anterior, dejó de funcionar.

Si recientemente comenzó a recibir 1055 errores, ¿cuáles son sus opciones?

  1. arregle las consultas SQL ofensivas, o haga que sus autores hagan eso.
  2. vuelva a una versión de MySQL lista para usar con el software de la aplicación que utiliza.
  3. cambie el sql_mode su servidor para deshacerse del modo ONLY_FULL_GROUP_BY recién configurado.

Puedes cambiar el modo haciendo un comando SET .

SET  sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

debe hacer el truco si lo hace justo después de que su aplicación se conecte a MySQL.

O bien, puede encontrar el archivo init en su instalación de MySQL , ubicar la línea sql_mode= y cambiarlo para omitir ONLY_FULL_GROUP_BY , y reiniciar su servidor.

Error 1055: ONLY_FULL_GROUP_BY: algo no está en la cláusula GROUP BY ... Ejemplos relacionados