MySQL的SQL_Mode修改小计
问题复现
今天突然发现MySQL服务器升级之后sql_mode
变成宽松摸索了,危害如下:
临时解决
set global sql_mode='strict_trans_tables'
(阿里服务器默认是:strict_trans_tables
)
重启失效验证
上面这种方式在MySQL重启后就会失效,想要永久生效还得联系运维工程师,eg:
配置文件
PS:为了防止再出现升级后SQL_Mode
改变,以后在配置文件中设置SQL_Mode
知识点
SQL Model
:定义MySQL对约束的响应行为:- 会话修改:
- mysql>
set [session] sql_model='xx_mode'
- mysql>
set @@session.sql_mode='xx_mode'
- PS:只在当前会话生效
- mysql>
- 全局修改:需要有权限,并且不会立即生效,对以后新建的会话生效(从全局继承的)
- mysql>
set global sql_mode='xx_mode'
- mysql>
set @@global.sql_mode='xx_mode'
- PS:MySQL重启后失效
- mysql>
- 配置修改:永远生效:
- eg:
vi /etc/my.cnf
,在[mysqld]
下添加sql_mode='xx'
,然后重启数据库
- eg:
- 常用mode:(阿里服务器默认是:
strict_trans_tables
)traditional
:使用传统模型,不允许对非法值做插入操作strict_all_tables
:对所有表做严格约束strict_trans_tables
:对所有支持事物类型的表做严格约束:- PS:最常见,主要对事物型的存储引擎生效,其他的没效果(如果插入数据不符合规范,则中断当前操作)
no_engine_subtitution
:建表的时候指定不可用存储引擎会报错only_full_group_by
:检验group by
语句的合法性- 要求在在分组查询语句中,把所有没有使用聚合函数的列,列出来
- eg:
select count(url),name from file_records group by url;
- 使用了name字段,name不是聚合函数,那必须在group by中写一下
- PS:生存环境下最好不要修改,容易报错对业务产生影响(严格变宽松没事)
- 查询当前设置:
select @@sql_mode
- 会话修改:
MySQL的SQL_Mode修改小计的更多相关文章
- mysql的sql_mode模式
在oracle或sqlserver中,如果某个表的字段设置成not null,insert或update时不给这个字段赋值,比如下面这样: 表t_test(id,name)中id,name都不允许为空 ...
- mysql的sql_mode合理设置
mysql的sql_mode合理设置 sql_mode是个很容易被忽视的变量,默认值是空值,在这种设置下是可以允许一些非法操作的,比如允许一些非法数据的插入.在生产环境必须将这个值设置为严格模式,所以 ...
- mysql的sql_mode 模式修改 my.cnf
1. sql_mode模式 mysql数据库的中有一个环境变量sql_mode,定义了mysql应该支持的sql语法,数据校验等!我们可以通过以下方式查看当前数据库使用的sql_mode: mysql ...
- 为什么在有的服务器上禅道、蝉知安装会报错? 之理解MySQL的SQL_MODE
最近用蝉知的CMS 建站比较多,感觉蛮顺手的,但在给客户安装的时候却会出现安装报错,其原因也很简单 查看了一下他们的install.sql文件中,有些时间字段的默认值是0000-00-00 00:00 ...
- MySQL的sql_mode模式说明及设置
MySQL的sql_mode模式说明及设置 MySQL的sql_mode合理设置 sql_mode是个很容易被忽视的变量,默认值是空值,在这种设置下是可以允许一些非法操作的,比如允许一些非法数据的插入 ...
- MySQL的sql_mode解析与设置,sql文件导入报错解决
在往MySQL数据库中插入一组数据时,出错了!数据库无情了给我报了个错误:ERROR 1365(22012):Division by 0:意思是说:你不可以往数据库中插入一个 除数为0的运算的结果.于 ...
- (转)mysql的sql_mode合理设置
mysql的sql_mode合理设置 目录 http://xstarcd.github.io/wiki/MySQL/MySQL-sql-mode.html http://dev.my ...
- MySQL的sql_mode解析与设置
https://blog.csdn.net/hhq163/article/details/54140286 https://blog.csdn.net/ccccalculator/article/de ...
- mysql> set sql_mode=''; mysql> set sql_mode='traditional';
mysql> set sql_mode=''; mysql> set sql_mode='traditional';
随机推荐
- typora快捷键
目录 基础信息 常用快捷键 修改快捷键 基础信息 typora是一款极佳的markdown写作软件,编辑和预览两者合二为一,免费良心软件,推荐使用. 官网:https://www.typora.io/ ...
- 6.2Python数据处理篇之pandas学习系列(二)Series数据类型
目录 目录 (一)Series的组成 (二)Series的创建 1.从标量中创建Series数据 2.从列表中创建Series数据 3.从字典中创建Series数据 4.从ndarry中创建Serie ...
- elasticsearch系列一:elasticsearch(ES简介、安装&配置、集成Ikanalyzer)
一.ES简介 1. ES是什么? Elasticsearch 是一个开源的搜索引擎,建立在全文搜索引擎库 Apache Lucene 基础之上 用 Java 编写的,它的内部使用 Lucene 做索引 ...
- 《生命》第五集:Birds (鸟类)
看了前四集之后意犹未尽,今天终于有时间来看第五集了. 本集讲的是鸟类,一个在恐龙开始繁荣的时代才开始有的物种. 鸟类和其他动物最不同的地方,就是羽毛,能隔热,保暖,最重要的是:能帮助他们飞行. 在秘鲁 ...
- vue 使用localStorage解决vuex在页面刷新后数据被清除的问题
通常,我们在使用vue编写页面时,会需要使用vuex在组件间传递(或者说共同响应)同一个数据的变化.例如:用户的登录信息. 下面,我们使用传递用户登录信息的例子来一步步解决这个问题. 首先,我们的第一 ...
- OpenCV 与 OpenGL 的关系是什么?
OpenCV是 Open Source Computer Vision LibraryOpenGL是 Open Graphics LibraryOpenCV主要是提供图像处理和视频处理的基础算法库,还 ...
- Oracle 执行计划(一)-------基本介绍
本文参照自:https://www.cnblogs.com/Dreamer-1/p/6076440.html 打开SQL执行计划: 1.选中一句正在执行的SQL 2.F5快捷键,就会出现下图,这就是执 ...
- LOJ2831 JOISC2018 道路建设 LCT、树状数组
传送门 题目的操作大概是:求某个点到根的链的逆序对,然后对这条链做区间赋值 求某个点到根的链,就是LCT中的access操作,所以我们每一次把access过后的链打上标记,就可以做到区间赋值了. 计算 ...
- JShell脚本工具
JShell脚本工具是JDK9的新特性 什么时候会用到 JShell 工具呢,当我们编写的代码非常少的时候,而又不愿意编写类,main方法,也不愿意去编译和运行,这个时候可以使用JShell工具.启动 ...
- Scrapy框架基本用法讲解
目标站点:http://quotes.toscrape.com/ (scrape官方练习站点) 这边为了区别Python3.5 和 Python3.7 我修改了scrapy的可执行文件 创建项目文件: ...