Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

961
Visualizações
Consulta agregada sin GROUP BY

Esta consulta parece funcionar perfectamente en mi máquina anterior. Sin embargo, en mi nueva máquina con MySQL 5.7.14 y PHP 5.6.25 parece arrojar un error:

Error grave: excepción no detectada 'PDOException' con el mensaje 'SQLSTATE[42000]: error de sintaxis o infracción de acceso: 1140 En una consulta agregada sin GROUP BY, la expresión n.° 1 de la lista SELECT contiene la columna no agregada 'pixel_perfect.users.id'; esto es incompatible con sql_mode=only_full_group_by' en C:\wamp64\www

Así es como se ve mi consulta:

 $sql="SELECT id, password, COUNT(id) AS count FROM users WHERE email = :email LIMIT 1"; $stmt=$db->prepare($sql); $stmt->bindValue(':email', $email); $stmt->execute();

¿Por qué recibo este error ahora y qué debo hacer para resolverlo sin problemas?

about 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Se realizó un cambio en la versión 5.7-ish donde ahora, de forma predeterminada, rechazará las consultas en las que agrega usando una función ( sum , avg , max , etc.) en la cláusula SELECT y fallará al colocar los campos no agregados en la cláusula GROUP BY . Este comportamiento es parte integral de todos los demás RDBMS y MySQL finalmente se está incorporando.

Tienes dos opciones:

  1. Puede cambiar la configuración de MySQL al comportamiento anterior predeterminado para permitir consultas no tan buenas como esta. La información se puede encontrar aquí
  2. Puedes arreglar tu consulta

La opción 2 sería algo como:

 SELECT id, password, COUNT(id) AS count FROM users WHERE email = :email GROUP BY id, password LIMIT 1
about 4 years ago · Santiago Trujillo Relatório

0

Es un poco tarde, pero me encontré con este error.

Este comando puede ser útil para cualquier otra persona que se encuentre con el mismo error.

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

Se puede encontrar más información sobre esto en Table Plus y otros enlaces citados anteriormente por JNevill .

Espero que ayude a alguien más.

about 4 years ago · Santiago Trujillo Relatório

0

La respuesta más fácil, en config/database.php, asegúrese de establecer estricto => verdadero a estricto => falso para la configuración de mysql.

Esto permitirá consultas menos que estrictas a costa de la seguridad para llamadas sql normales bien formadas (aún no 100% seguras), pero permitirá el uso de otras llamadas sql que podrían no ser seguras si se escriben incorrectamente.

about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda