Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

957
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!