问题复现

今天突然发现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> set global sql_mode='xx_mode'
      • mysql> set @@global.sql_mode='xx_mode'
      • PS:MySQL重启后失效
    • 配置修改:永远生效:
      • eg:vi /etc/my.cnf,在[mysqld]下添加sql_mode='xx',然后重启数据库
    • 常用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修改小计的更多相关文章

  1. mysql的sql_mode模式

    在oracle或sqlserver中,如果某个表的字段设置成not null,insert或update时不给这个字段赋值,比如下面这样: 表t_test(id,name)中id,name都不允许为空 ...

  2. mysql的sql_mode合理设置

    mysql的sql_mode合理设置 sql_mode是个很容易被忽视的变量,默认值是空值,在这种设置下是可以允许一些非法操作的,比如允许一些非法数据的插入.在生产环境必须将这个值设置为严格模式,所以 ...

  3. mysql的sql_mode 模式修改 my.cnf

    1. sql_mode模式 mysql数据库的中有一个环境变量sql_mode,定义了mysql应该支持的sql语法,数据校验等!我们可以通过以下方式查看当前数据库使用的sql_mode: mysql ...

  4. 为什么在有的服务器上禅道、蝉知安装会报错? 之理解MySQL的SQL_MODE

    最近用蝉知的CMS 建站比较多,感觉蛮顺手的,但在给客户安装的时候却会出现安装报错,其原因也很简单 查看了一下他们的install.sql文件中,有些时间字段的默认值是0000-00-00 00:00 ...

  5. MySQL的sql_mode模式说明及设置

    MySQL的sql_mode模式说明及设置 MySQL的sql_mode合理设置 sql_mode是个很容易被忽视的变量,默认值是空值,在这种设置下是可以允许一些非法操作的,比如允许一些非法数据的插入 ...

  6. MySQL的sql_mode解析与设置,sql文件导入报错解决

    在往MySQL数据库中插入一组数据时,出错了!数据库无情了给我报了个错误:ERROR 1365(22012):Division by 0:意思是说:你不可以往数据库中插入一个 除数为0的运算的结果.于 ...

  7. (转)mysql的sql_mode合理设置

    mysql的sql_mode合理设置 目录          http://xstarcd.github.io/wiki/MySQL/MySQL-sql-mode.html http://dev.my ...

  8. MySQL的sql_mode解析与设置

    https://blog.csdn.net/hhq163/article/details/54140286 https://blog.csdn.net/ccccalculator/article/de ...

  9. mysql> set sql_mode=''; mysql> set sql_mode='traditional';

    mysql> set sql_mode=''; mysql> set sql_mode='traditional';

随机推荐

  1. sqlserver 学习之分离与附加数据库

    在学习sqlserver数据库的过程中,我们会学习到有关一些听起来比较陌生的专用名词,比如说分离与附加这两个专有名词,对于我来说就是比较陌生的.好的,下面我们一起来学习一下吧.为了讲的通俗一点,下面以 ...

  2. bug管理工具之禅道的测试模块的使用

    https://www.cnblogs.com/evablogs/p/6785017.html 角色:产品经理PO,项目经理PM,开发,测试 测试任务: bug: 1.维护bug视图模块:[测试]-[ ...

  3. Operating system error 32(failed to retrieve text for this error. Reason: 15105)

    一台数据库服务器的事务日志备份作业偶尔会出现几次备份失败的情况,具体的错误信息为: DATE/TIME:    2018/7/30 12:10:52 DESCRIPTION: BackupDiskFi ...

  4. Java中console类的简单用法

    Java.io.Console 只能用在标准输入.输出流未被重定向的原始控制台中使用,在 Eclipse 或者其他 IDE 的控制台是用不了的. import java.io.Console; pub ...

  5. 设置TextBlock默认样式后,其他控件的Text相关属性设置失效问题

    问题: 定义了默认TextBlock样式后,再次自定义下拉框 or 其他控件 ,当内部含有TextBlock时,设置控件的字体相关样式无效,系统始终使用TextBlock设置默认样式 解决方案: 为相 ...

  6. 英语口语练习系列-C07-谈女孩

    <将进酒>·李白 君不见黄河之水天上来,奔流到海不复回. 君不见高堂明镜悲白发,朝如青丝暮成雪. 人生得意须尽欢,莫使金樽空对月. 天生我材必有用,千金散尽还复来. 烹羊宰牛且为乐,会须一 ...

  7. Tomcat与Nginx服务器的配合使用及各自的区别

    Nginx常用做静态内容服务和反向代理服务器,以及页面前端高并发服务器.适合做负载均衡,直面外来请求转发给后面的应用服务(tomcat ,django什么的),Tomcat更多用来做做一个应用容器,让 ...

  8. python爬虫【实战篇】模拟登录人人网

    requests 提供了一个叫做session类,来实现客户端和服务端的会话保持 使用方法 1.实例化一个session对象 2.让session发送get或者post请求 session = req ...

  9. springboot项目

    https://my.oschina.net/ityouknow/blog/1629066

  10. kernel笔记——块I/O

    Linux下,I/O处理的层次可分为4层: 1. 系统调用层,应用程序使用系统调用指定读写哪个文件,文件偏移是多少  2. 文件系统层,写文件时将用户态中的buffer拷贝到内核态下,并由cache缓 ...