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