嗨,我想知道是否有人能解释一下下面的错误。sql在本地工作正常,但我在远程得到以下错误。
sql查询:
SELECT COUNT(node.nid),
node.nid AS nid,
node_data_field_update_date.field_update_date_value AS node_data_field_update_date_field_update_date_value
FROM node node
LEFT JOIN content_type_update node_data_field_update_date ON node.vid = node_data_field_update_date.vid
WHERE node.type IN ('update')
ORDER BY node_data_field_update_date_field_update_date_value DESC
mysql说:
7条答案
按热度按时间nzrxty8p1#
我也是这样。只需遵循以下说明:
在拉雷维尔,去
config/database.php
搜索'strict'=>true
属性并将其更改为'strict'=>false
.php artisan优化
那我希望你能把它修好。再见!
vltsax252#
使用聚合函数的单个列可以工作,而不使用聚合函数的列的版本不能工作的原因是您需要指定
GROUP BY
条款。以下是您的查询的外观:我把你的表别名改成了较短的-更容易阅读。以下是您的问题:
我修改了这个示例以使用一个假列,以便突出显示需要如何定义groupby。任何未在聚合函数中 Package 而引用的列都应该在
GROUP BY
. 我说应该,因为mysql是我所知道的唯一一个支持GROUP BY
在这里,您可以有选择地省略列—关于为什么查询可以在mysql上工作,但如果不更改其他dbs就不能被移植,有很多问题。显然在你的情况下,你仍然需要定义至少一个。1yjd4xko3#
您的服务器可能只打开了\u full \u group \u by。您可以将其关闭,也可以将每个选定字段添加到组中。
a64a0gku4#
在laravel框架中,设置
'strict' => false
,将修复此问题。xriantvc5#
在sql中使用sum()、min()、max()等聚合函数时,必须使用group by
但在最新的sql中,您也必须将select中的所有列作为一个group by来使用。
对于您在config->database中使用的laravel项目
'严格'=>错误,
并通过运行php artisan清除配置缓存config:cache.
我想这对你会更有帮助。
shstlldc6#
将其剥离为基本内容:
3zwjbxry7#
我在MySQL5.0的旧版本中也遇到了同样的问题。在更新的5.5版本中,它可以工作!