mysql5.7以上版本带来的一些麻烦(尤其是mac系统)

问题:

1.mysql5.7以上的版本创建数据表,datetime默认值设置'0000-00-00',出现异常:Invalid default value for 'create_time'

2.查询时出现Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 't_monitor_receive.username' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

 

问题分析:

1.首先查看sql_mode,进入数据库,输入以下命令

select @@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

2.分析原因

其中NO_ZERO_IN_DATE,NO_ZERO_DATE,导致了第一个问题,不允许默认设置为'0000-00-00',

ONLY_FULL_GROUP_BY则导致了第二个问题

解决方法:

修改sql-mode,去掉导致问题的设置,如果出现问题1,就去掉NO_ZERO_IN_DATE,NO_ZERO_DATE,

如果出现问题2,就去掉ONLY_FULL_GROUP_BY

 如果跟我一样都出现了,那就都去掉,将sql-mode的值设置为:

STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

 

修改sql-mode的方法

一、临时修改(这种方法只对当前会话有效,重启数据库就失效了)

直接在进入数据库之后输入:

set @@sql_mode = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

 

二、永久修改

需要修改mysql的配置文件,在配置文件中加入一条

sql-mode= STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

需要注意的是对于mac系统需要修改my.cnf(网上的都是这么做,但是我没有my.cnf,只有my.conf,一开始我在/etc目录下的my.conf中加入上面的设置,但是不起作用,于是只能创建my.cnf)

方法:我觉得多数人可能

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值