Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'userinfo

          说明情况: 首先我是在Linux服务器上新装了一个mysql , 原先版本为5.7.22 , 现在不小心装成了5.7.16 , 项目启动是时候跳转首页不显示数据 , 后台开始报错 :

          如下 , 具体错误bug忘了复制截图 , 只保留了标题和下面这两行百度的内容 , 属于bug原因 

Expression #1 of ORDER BY clause is not in SELECT list, references column 'advplatform.t1.order_num' which is not in SELECT list; this is incompatible with DISTINCT

 

原因是   5.7.5之后版本默认启用了only_full_group_by SQL模式,所以MySQL会不识别选择列表、条件或顺序列表引用的查询 , 

以下是自己解决问题的步骤: 

      1. 打开xshell , 连接上对应的Linux服务器 , 可直接在根目录中输入 mysql -uroot -p123456         注: (root 是mysql服务的账号 , -p后面的123456是mysql的密码 , 两者视个人配置更改 , - 前需要空格 u 和 p 连接的账号密码不需要空格: )

        此时进入mysql命令符模式  Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'userinfo_第1张图片

                  2. 输入SHOW SESSION VARIABLES; 命令行 , 我自己试了下小写 , 不知道为什么不行 , 还是老实的大写了 , 回车后会弹出很多的数据 , 你从中找到 sql_mode

Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'userinfo_第2张图片

如果 其中存在ONLY_FULL_GROUP_BY; 的话 , 就要修改这个属性的内容 , 具体为什么请恕在下不知道了 , 修改的时候输入

set session sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';    ( 不知道为什么 , 那个set 单词和session 离的很远 , 小伙伴们复制小心)

运行成功后再像刚刚那样查询一下看看属性是否改变 , 如改变成自己set的内容即算成功 ;

          3. 还有一个属性要修改 SHOW GLOBAL VARIABLES;    其操作步骤与 2 丝毫不差   , 可照搬操作  

set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

确认修改完成后 , 重启项目 , 可以运行 , bug 消失 ;

 

最后 , 喜大普奔 , 撒花花 .......

修改 bug 过程参照的大神贴, 大家围观 https://blog.csdn.net/fansili/article/details/78664267

 

 

你可能感兴趣的:(java,bug记录)