MySQL的sql_mode

作者:Garany 发布于:2018-06-07 分类:破万卷书

sql_mode作为mysql数据库的环境变量,定义了mysql应该支持的sql语法,数据校验等。
mysql5.0+支持三种sql_mode模式: 

  • ANSI模式:宽松模式,对插入数据进行校验,如果不符合定义类型或长度,对数据类型调整或截断保存,报warning警告。 
  • TRADITIONAL模式:严格模式,当向mysql数据库插入数据时,进行数据的严格校验,保证错误数据不能插入,报error错误。
  • STRICT_TRANS_TABLES模式:严格模式,进行数据的严格校验,错误数据不能插入,报error错误。

由于MySQL5.6+中使用了STRICT_TRANS_TABLES模式,使MySQL 5.7控制的更加严格,一些低版本的SQL语句就无法执行了。

报错.png


1.查看默认的SQL模式:

查询.png

2.修改默认sql_mode模式

2.1 临时生效,数据库重启失效

mysql> SET global  sql_mode="IGNORE_SPACE,NO_ZERO_IN_DATE,
    "> NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,
    "> NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";

2.2 永久生效

[mysqld]
sql_mode=IGNORE_SPACE,NO_ZERO_IN_DATE,\
         NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,\
         NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
# /etc/init.d/mysqld restart


标签: linux mysql

评论列表

新闻头条
2018-06-20 01:56
文章不错支持一下吧

我来说说