问题复现

今天突然发现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. json-gson:.isJsonNull()问题-堆栈溢出

    不用管我下面的第一个答案.我读得太快了. 看起来这是一个简单的例子,文件撒谎-或者至少是被误解了.幸运的是,代码并不是那么简单,而且gson是一个开源项目. 这是 JsonObject.get(Str ...

  2. 基于raspberry搭建个人web server

    树莓派系统介绍 安装操作系统及网络\远程控制配置 安装常用软件 构建web服务器(nginx + php + sqlite) 构建web服务器(appach+mysql+php) 构建NAS服务器 其 ...

  3. Django 如何获取真实远程客户端IP

    问题简述 我们知道HttpRequest.META字典包含所有HTTP头部信息(可用的头部信息取决于客户端和服务器).一般情况下,HttpRequest.META.get('REMOTE_ADDR') ...

  4. Linux中ftp的常用命令

    转自:https://www.jb51.net/article/103904.htm FTP命令 ftp> ascii # 设定以ASCII方式传送文件(缺省值) ftp> bell # ...

  5. SQL SERVER-查询爆破sa密码的主机

    drop table if exists #sql create table #sql ( Logdatae ), processinfo ), [text] varchar(max) ) go IN ...

  6. Keepalived脑裂

    问题描述:开启防火墙后,Keepalived出现脑裂. 背景架构:两台centos7通过Keepalived实现高可用 问题具体表现形式:两台主机通过ip addr (ip  a)查看,发现两台主机都 ...

  7. Linux 用户关联命令

    在执行useradd命令创建用户时,它首先读取/etc/default/useradd文件的配置参数,然后通过这些参数来配置新创建的用户,如创建名为luser的用户. [root@rhl5 -]# u ...

  8. python_库学习_02_微信自动回复机器人

    一.python发展的趋势日益庞大,微信也有对应的库itchat.这次的实例做做成可在任意电脑运行的微信自动回复机器人exe.文件. 二.完成这个小应用我们需要装一些库,, itchat:这个东东不出 ...

  9. 英语口语练习系列-C22-吃东西

    基础词汇 1. bill [bɪl] n. 账单:钞票:法案:鸟嘴 Bill (人名)比尔 pay the bill 付账单 telephone bill 话费单 electricity bill 电 ...

  10. day17-异常处理

    今天的内容比较少,只是单独的异常处理 开始今日份整理 1.异常 定义:异常时错误发生的信号,一旦出错,并且程序没有处理这个错误,就会抛出异常,并且程序会运行中止 2.异常的分类 2.1语法错误:pyt ...