最近搜索

高版本 数据库有一个bug(5.7)

浏览:1217
管理员 2019-07-19 23:46

高版本数据报这样一个错 sql_mode=only_full_group_by   mysql  5.7按下面解决


这样一条命令  

SELECT t2.id,t2.typeName,COUNT(t1.id) AS blogCount FROM t_blog t1 RIGHT JOIN t_blogtype  t2 ON t1.typeId=t2.id GROUP BY t2.typeName ORDER BY t2.orderNo;

报下面的错

sql_mode=only_full_group_by


如何解决

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

每次重启  服务器都要进行这样的操作。(我电脑是5.1 服务器是5.7)

看看如何  规避?

暂时没有找到方法   

执行完sql后需要 重启项目重启tomcat  或者 docker




上面的语句 有可能不起作用。 使用下面的  一条一条执行


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


set session sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';


执行完之后,

关闭项目 --启动项目。即可正常。




什么情况下会触发这个bug

重启服务器,



需要操作的数据库

实验室系统。我的博客。天康项目



如何解决

执行上面2行sql

重启tomcat 即可 或者 重启docker



永久解决方案

修改MySQL配置文件(my.cnf或my.ini )  修改/etc/my.cnf配置文件 ,在[mysqld]段添加:

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

image.png



查询当前模式

SELECT @@GLOBAL.sql_mode;
SHOW VARIABLES LIKE 'sql_mode';

查询当前模式结果如下: 这是不会报错的 sql_mode

STRICT TRANS TABLES,NO AUTO CREATE USER, NO ENGINE SUBSTITUTION(我电脑mysql)

STRICT TRANS TABLES,NO ZERO IN DATE,NO ZERO DATE,ERROR FOR DIVISION BY ZERO,NO ENGINE SUBSTITUTION(服务器mysql)




重启服务器 输出sql mode  用的不是docker mysql  自己安装的mysql5.7

image.png


执行完那2个命令之后是这样

image.png


联系站长

站长微信:xiaomao0055

站长QQ:14496453