.sql文件_详解MySQL数据库中的sql_mode模式

概述

之前生产环境配置文件里的sql_mode有个模式ONLY_FULL_GROUP_BY,其意思是:

对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么将认为这个SQL是不合法的,因为列不在GROUP BY从句中。

如果自己sql中有group by,那就要注意了,今天顺便总结下关于sql_mode模式方面的内容,也做个备忘!


一,sql_mode值的含义

c0b2aec913cff4486da0e0f7f6b6185a.png

mysql5.0以上版本支持三种sql_mode模式:

5c8f836a3950c5e1a2f29fd5467185d4.png

这个sql_mode简而言之就是:它定义了你MySQL应该支持的sql语法,对数据的校验等等。。

如何查看当前数据库使用的sql_mode:

mysql> select @@sql_mode;

如下是我的数据库当前的模式:

cfc9299b4222c024dd94c97f46318956.png

设置 sql_mode

1、查看当前连接会话的sql_mode模式:

mysql> select @@session.sql_mode;

2、从环境变量查看sql_mode模式

mysql> show variables like "sql_mode";

3、查看全局sql_mode设置:

mysql> select @@global.sql_mode;
ae54c73335b366533ee940064ec73280.png

4、设置global:

mysql> set global sql_mode='NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE';
b5f638cd501016e42b5f88b0097e322e.png

5、设置全局sql_mode可以在不重启MySQL的情况下生效

配置文件里面设置

sql_mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE

修改配置文件后,重启MySQL服务生效


篇幅有限,关于sql_mode方面的内容就介绍到这了,后面会分享更多mysql方面内容,感兴趣的朋友可以关注下!

f8dfd5ef57b0ab418852f3223e608452.gif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值