【发布时间】:2017-08-26 18:07:22
【问题描述】:
我创建了一个数据库视图,当我对这个视图使用 laravel 分页时,它会抛出:
SQLSTATE[42000]: Syntax error or access violation: 1140 Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause (SQL: select count(*) as aggregate from `parameter_log_site_detail` where `site_id` = EPE)
但此错误仅在实时服务器中弹出。分页在本地服务器上工作正常。
数据库视图: (parameter_log_site_detail)
select `t`.`site_id` AS `site_id`,cast(`t`.`logged_at` as date) AS `logged_on`,`t`.`daily_generation` AS `daily_generation`,`t`.`reading` AS `tot_reading` from `parameter_log_tab` `t` order by cast(`t`.`logged_at` as date) desc
型号:
public function scopeSiteDailyReadings($query)
{
return $query->from('parameter_log_site_detail');
}
控制器:
$generations = EnergyGeneration::siteDailyReadings()->where('site_id', $site_id)->orderBy('logged_on', 'desc')->paginate(15);
实时服务器信息
MySQL Server version: 5.6.37 - MySQL Community Server (GPL)
PHP version: 5.6.30
Laravel version: 5.4
本地服务器信息(正常运行的地方)
MySQL Server version: 5.7.19 - MySQL Community Server (GPL)
PHP version: 7.1.7
Laravel version: 5.4
有人能解释一下这是什么原因吗?我读到了 ONLY_FULL_GROUP_BY。但不知道是不是因为服务器版本是5.6.*。
【问题讨论】:
-
您是否检查过您的服务器上是否启用了
ONLY_FULL_GROUP_BY? -
@jaysingkar 用于实时服务器
SELECT @@sql_mode返回NO_ENGINE_SUBSTITUTION而在本地服务器中,它返回ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_... -
从您的操作看来,
ONLY_FULL_GROUP_BY在您的服务器中被禁用,而在您的本地服务器中被启用。虽然它应该与给定的 MySQL 文档不同。 :( .. 你能不能尝试在你的服务器上启用ONLY_FULL_GROUP_BY。我知道,我在这里帮不了你太多,但我看不到任何其他问题
标签: mysql laravel laravel-pagination