暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
Mysql Error 1055 语法校验错误解决方法
186
4页
2次
2022-10-08
免费下载
Mysql Error 1055
语法校验错误解决方法
1
、版本信息
操作系统:
CentOS Linux release 7.6.1810 (Core)
数据库:
Mysql 5.7.29
2
、问题描述
sql
mysql
代码为
ERROR 1055
1)
部分相关
sql
语句
SELECT * FROM
(
SELECT
ul.USER_ID, ul.USER_MOBILE, ul.USER_EMAIL,
ul.`WX_WORK_USER_ID`
FROM
tom_user_login ul
LEFT JOIN tom_training_assign_extent tae ON tae.USER_ID =
ul.USER_ID
WHERE
tae.USER_ID IS NOT NULL
AND tae.TRAINING_ID = '0b2a0e19-1b77-45f9-94dd-dd37497c74fa'
AND ul.USER_STATUS = 'Y'
) user1
GROUP BY USER_ID
HAVING COUNT(*)=2;
2)
执行结果
提示
SELECT
列表的表达式
#2
不在
GROUP BY
子句中,
并且包含非聚合列“
user1.USER_MOBILE”
,它在功能上不依
赖于列在
GROUP BY
子句中;这与
sql_mode=only_full_group_by
不兼容
3
、问题分析
错误提示中有关于
sql_mode
参数的信息,查阅
MySQL
官网
https://dev.mysql.com/doc/refman/5.7/en/sql-
mode.html
sql_mode
会影响
MySQL
支持的
SQL
语法及其执行的数
据验证检查。这使得在不同的环境中使用
MySQL
以及与其他
数据库服务器一起使用
MySQL
变得更加容易。
MySQL5.7
中可以设置的
sql_mode
有:
ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES,
NO_ZERO_IN_DATE, NO_ZERO_DATE,
ERROR_FOR_DIVISION_BY_ZERO,
NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION.
MySQL5.7.5
及以后版本中默认包含
ONLY_FULL_GROUP_BY
,其作用为:对于
GROUP BY
聚合
操作
,
如果在
SELECT
中的列
,
没有在
GROUP BY
中出现
,
那么这
SQL
是不合法的
,
因为列不在
GROUP BY
从句中。
查看不同环境中该参数配置
测试环境:
SELECT @@GLOBAL.sql_mode;
生产环境
:
SELECT @@GLOBAL.sql_mode;
最终确定错误代码
1055
是由于生产环境中
sql_mode
数与测试环境中不一致导致。
4
、问题处理
需在生产环境修改
sql_mode
参数
临时修改
:
对后续会话生效
,
重启后失效。
SET GLOBAL sql_mode =
'STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_AUTO
_CREATE_USER,NO_ENGINE_SUBSTITUTION';
永久修改
:
需重启数据库才可生效
of 4
免费下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。