Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: ..... this is incompatible with sq

1、写在开头

标题之前我想说一下Linux的mysql真的实在是太坑了。太坑了。总是会出现这样那样的你想不到的问题。崩溃了。首先来罗列一下我遇到过的一些问题吧。
1、大小写敏感
2、连接数超过系统最大连接数
3、Can’t connect to local MySQL server through socket '/Data/mydata/mysql.sock’ socket文件目录不对应导致的问题
4、今天要说的就是 没有打开only_full_group_by
Cause:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: … this is incompatible with sql_mode=only_full_group_by

好吧,语言组织的不是很好,直接解决问题吧,前面的几个问题已经在以前的博客上有说明,今天我们只讲一下第四个错误的解决办法吧。

2、问题的分析

出现的原因:
MySQL 5.7.5和up实现了对功能依赖的检测。如果启用了only_full_group_by SQL模式(在默认情况下是这样),那么MySQL就会拒绝选择列表、条件或顺序列表引用的查询,这些查询将引用组中未命名的非聚合列,而不是在功能上依赖于它们。(在5.7.5之前,MySQL没有检测到功能依赖项,only_full_group_by在默认情况下是不启用的

解决办法:
进入到mysql中查看sql_mode,因为我已经修改过了,所以我的截图是修改之后的截图。

   select @@sql_mode;

在这里插入图片描述
不重启设置sql_mode

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';
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';

只是在命令中这样修改可能只是暂时的。也许服务器重启一下就失效了,当然了我没有去试过,有兴趣你们可以去试一下是不是像我说的那样。为了保险起见,我在最后还修改了一下系统的配置文件:
打开配置文件:

vim /etc/mysql/mysql.conf.d/mysqld.cnf

在文件的最后一行添加:

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

最后重启mysql:

service mysql restart

在这里插入图片描述
最后我们来重启一下程序看看是否成功了:
在这里插入图片描述
在这里插入图片描述
看!已经成功了!
这个博客是不是很精美啊。有需要的可以滴滴…

发布了84 篇原创文章 · 获赞 34 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/qq_40985788/article/details/104441119