Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 仅SQL模式\u满\u组\u导致Lumen 5.7出错_Php_Mysql_Laravel_Lumen - Fatal编程技术网

Php 仅SQL模式\u满\u组\u导致Lumen 5.7出错

Php 仅SQL模式\u满\u组\u导致Lumen 5.7出错,php,mysql,laravel,lumen,Php,Mysql,Laravel,Lumen,我已将我的lumen版本从5.6更新到5.7。在这个数据库包v5.7.15中,默认情况下只启用MySQL模式\u full\u group\u。这会导致我的一些Group By查询失败。大多数人建议禁用内腔中的严格模式。我认为禁用严格模式不是正确的解决方案。MySQL中是否有其他可用的查询?或者我需要用PHP构建一个逻辑?我正在使用MySQL 5.6 我用的是这样的怪癖 SELECT MONTHNAME(date_created) MONTH, YEAR(date_created) YEAR

我已将我的lumen版本从5.6更新到5.7。在这个数据库包v5.7.15中,默认情况下只启用MySQL模式\u full\u group\u。这会导致我的一些Group By查询失败。大多数人建议禁用内腔中的严格模式。我认为禁用严格模式不是正确的解决方案。MySQL中是否有其他可用的查询?或者我需要用PHP构建一个逻辑?我正在使用MySQL 5.6

我用的是这样的怪癖

SELECT MONTHNAME(date_created) MONTH, YEAR(date_created) YEAR 
FROM test_table 
GROUP BY MONTH, YEAR

我没有使用聚合函数。创建的数据列具有日期时间数据类型

此SQL查询将修复此问题:


设置全局sql\u模式=选择替换@@sql\u模式,'ONLY\u FULL\u GROUP\u BY'

如果您使用MySQL 5.7,您应该通过更改SQL查询来补偿full_group_,或者您可以从mysq设置中删除full_group_by选项

对于这种类型的查询,如果您不使用需要group by的GREGATE函数,您可以使用distinct,如下所示:

SELECT DISTINCT MONTHNAME(date_created) MONTH, YEAR(date_created) YEAR 
FROM test_table 
因此,通过这种方式,您不需要通过限制禁用完整组

您也可以这样做:

SELECT MONTHNAME(date_created) MONTH, YEAR(date_created) YEAR 
FROM test_table 
GROUP BY MONTHNAME(date_created), YEAR(date_created) 

检查并更改查询。如果您不使用“完整”或“组”,则可能会得到错误或意外的结果。通常的解决方案是将select子句中的所有列添加到group by子句中。@SalmanA的可能重复项:我使用select MONTHNAMEdate\u created MOUNT、YEARdate\u created YEAR from test\u表格group by MOUNT、YEAR。我没有使用聚合函数。创建的数据列具有datetime数据类型。