16.Laravel报错SQLSTATE[42000] Syntax error or access violation 1055 'xxx' isn't in GROUP BY.txt
来源:互联网 发布:淘宝客广场报名有用吗 编辑:程序博客网 时间:2024/06/10 05:21
2016.11.15
1.问题描述
2.解决过程
3.总结
1.问题描述
今天做项目优化时做了个视图来优化查询,创建视图语句为
select `edm_courses`.`cou_id` AS `cou_id`,`edm_courses`.`cou_name` AS `cou_name`,`edm_courses`.`tch_id` AS `tch_id`,`edm_teachers`.`tch_name` AS `tch_name`,`edm_courses`.`cou_qrcode` AS `cou_qrcode`,`edm_courses`.`start_time` AS `start_time`,`edm_courses`.`stop_time` AS `stop_time`,count(`edm_calls`.`call_id`) AS `call_num`from ((`edm_courses` left join `edm_calls` on((`edm_courses`.`cou_id` =`edm_calls`.`cou_id`)))left join `edm_teachers` on((`edm_courses`.`tch_id` =`edm_teachers`.`tch_id`)))group by `edm_courses`.`cou_id`。
然后在Laravel中创建了模型Course,然后进行查询
Course::where('tch_id',8)->get();
结果报错:
SQLSTATE[42000]: Syntax error or access violation: 1055 'edm_courses.cou_name' isn't in GROUP BY
2.解决过程
查询mysql 1055错误码发现问题为在mysql的配置中如果设置了sql_mode包含
ONLY_FULL_GROUP_BY值得话,在进行查询时需要将select的字段都包含在group by 中。
即 select x,y from xxx group by x,y
否则就会报错
参考链接:http://stackoverflow.com/questions/25800411/mysql-isnt-in-group-by
但是查看自己的配置my.cnf发现在sql_mode中并没有ONLY_FULL_GROUP_BY这个值,然后在终端和navicat中使用运行sql语句
select * from view where tch_id = 8;
发现并没有报错,可以正确输出结果,由此猜想并不是数据库配置的原因,应该是laravel框架的原因
然后去查看Laravel的配置文件,config/database.php,查找mysql的配置,
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => env('DB_PREFIX',''),
'strict' => true,
'engine' => null,
],
发现有个strict项,默认为true,上网也没有查找到相关解释,根据字面意思猜测可能为是否开启严格模式,将其修改为false,再次测试发现问题解决,可以输出正确结果
3.总结
在mysql的配置中,sql_mode的ONLY_FULL_GROUP_BY值代表group by字句中的字段必须全部包括select中的字段,Laravel中也有相对应的配置项,在使用laravel时应该注意。
暂时还不知道strict配置项的具体意义,有待查证
1 0
- 16.Laravel报错SQLSTATE[42000] Syntax error or access violation 1055 'xxx' isn't in GROUP BY.txt
- laravel 5.4 报错SQLSTATE[42000] Syntax error or access violation 1055 'xxx' isn't in GROUP BY
- SQLSTATE[42000]: Syntax error or access violation: 1055 'kf_local.g.group_name' isn't in GROUP BY
- laravel运行带有group by的sql时提示 “SQLSTATE[42000]: Syntax error or access violation: 1055 错误解决
- Laravel:php artisan migrate报错SQLSTATE[42000]: Syntax error or access violation: 1067 Invalid default
- 安装Magento报错:SQLSTATE[42000]: Syntax error or access violation: 1067 Invalid default value for 'perio
- Laravel : Syntax error or access violation: 1055 Error
- Laravel migrate时报错: Syntax error or access violation: 1071 Specified key was too long
- MySQL SQLSTATE[42000]: Syntax error or access violation: 1286 Unknown table engine 'InnoDB' 错误的原因及解决
- Laravel5.5问题:SQLSTATE[42000] Syntax error or access violation 1071 Specified key was too long; max k
- laravel中报错:Syntax error or access violation: 1115 Unknown character set: 'utf8mb4'
- Laravel中使用GroupBy时产生的错误MySQL : isn't in GROUP BY
- error: Apostrophe not preceded by \ (in haven't input accoount or it isn't a legal E-mail)
- sqlite报错 near "group": syntax error
- Syntax error or access violation: 1286 Unknown storage engine 'InnoDB' 解决办法
- Yii报错:SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'id' in order clause is ambiguous
- access violation xxxx in module xxxx : in address xxx
- mysql报错Error Code: 1022. Can't write; duplicate key in table `xxx`
- 排序算法之归并排序 java
- 概率
- Android性能优化之使用线程池处理异步任务
- 【NOIP模拟题】【数学归纳法】【递推】【容斥原理】【等比数列求和】2016.11.15 第三题 小L的珍珠挂饰 题解
- R语言案例分析:财政收入的多元相关与回归分析
- 16.Laravel报错SQLSTATE[42000] Syntax error or access violation 1055 'xxx' isn't in GROUP BY.txt
- JS中常见的浏览器兼容问题和解决方法
- QQ群红包的算法实现探讨(基于PHP demo)
- Android Studio 第一个JNI程序
- Mono后台进程制作
- 仿淘宝垂直滚动条目
- Ionic开发入门教程_2
- BZOJ1044
- css(层叠样式表)和html结合的四种方式