[grifo]
Error
El error de ejecución de SQL es el siguiente:
SELECT student.s_no,student.s_name,SUM(result.mark) FROM student,result WHERE student.s_no=result.s_no GROUP BY student.s_no
> 1055 - Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'db_ketest.student.s_name' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
> 时间: 0.081s
la razón
MySQL 5.7.5 y superior tienen función de detección de dependencia. Si el modo SQL ONLY_FULL_GROUP_BY está habilitado (habilitado de forma predeterminada), MySQL rechazará listas de selección, TENIENDO condiciones o consultas de lista ORDER BY que hacen referencia a columnas no agregadas que no están nombradas en la cláusula GROUP BY, ni son funcionalmente dependientes de ellas. (Antes de 5.7.5, MySQL no detectaba dependencias funcionales y ONLY_FULL_GROUP_BY no estaba habilitado de forma predeterminada).
Solución
Método 1:
utilice la línea de comandos o el cliente de base de datos para ejecutar la
declaración SQL 1.SQL, seleccione la consulta @@ global.sql_modemysql> select @@global.sql_mode; +-------------------------------------------------------------------------------------------------------------------------------------------+ | @@global.sql_mode | +-------------------------------------------------------------------------------------------------------------------------------------------+ | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION | +-------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.06 sec)
2. Elimina ONLY_FULL_GROUP_BY y restablece el valor.
mysql> set @@global.sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
Método dos
vi modificar el archivo de configuración de MySQL my.cnf[mysqld] sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Guarde el archivo de configuración y reinicie el servicio MySQL: service mysql restart
== End ==