1.开启与关闭Strict Mode方法

找到mysql安装目录下的my.cnf(windows系统则是my.ini)文件

在sql_mode中加入STRICT_TRANS_TABLES则表示开启严格模式,如没有加入则表示非严格模式,修改后重启mysql即可

例如这就表示开启了严格模式:
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

2.Strict Mode功能说明

  • 不支持对not null字段插入null值
  • 不支持对自增长字段插入”值
  • 不支持text字段有默认值

3.例子:

创建数据表方便测试

CREATE TABLE `mytable` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(20) NOT NULL,`content` text NOT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

1.not null字段插入null值测试

插入一条记录,name的值为null

在非严格模式下执行

mysql> insert into mytable(content) values('programmer');
Query OK, 1 row affected, 1 warning (0.00 sec)mysql> select * from mytable;
+----+------+------------+
| id | name | content    |
+----+------+------------+
|  1 |      | programmer |
+----+------+------------+
1 row in set (0.00 sec)

执行成功,name的值自动转为”

在严格模式下执行

mysql> insert into mytable(content) values('programmer');
ERROR 1364 (HY000): Field 'name' doesn't have a default value

执行失败,提示字段name不能为null值

2.自增长字段插入”值测试

对id字段插入”值

在非严格模式下执行

mysql> insert into mytable(id,name,content) value('','fdipzone','programmer');
Query OK, 1 row affected, 1 warning (0.00 sec)mysql> select * from mytable;
+----+----------+------------+
| id | name     | content    |
+----+----------+------------+
|  1 | fdipzone | programmer |
+----+----------+------------+
1 row in set (0.00 sec)

执行成功

在严格模式下执行

mysql> insert into mytable(id,name,content) value('','fdipzone','programmer');
ERROR 1366 (HY000): Incorrect integer value: '' for column 'id' at row 1

执行失败,提示字段id不能为”

mysql> insert into mytable(id,name,content) value(null,'fdipzone','programmer');
Query OK, 1 row affected (0.00 sec)mysql> select * from mytable;
+----+----------+------------+
| id | name     | content    |
+----+----------+------------+
|  1 | fdipzone | programmer |
+----+----------+------------+
1 row in set (0.00 sec)

字段id为null则可执行成功

3.text字段默认值测试

创建一个数据表mytable,其中text设置默认值default=”

在非严格模式下执行

mysql> CREATE TABLE `mytable` (
    ->  `id` int(11) NOT NULL AUTO_INCREMENT,
    ->  `name` varchar(20) NOT NULL,
    ->  `content` text NOT NULL default '',
    ->  PRIMARY KEY (`id`)
    -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected, 1 warning (0.03 sec)mysql> show tables;
+------------------------------+
| Tables_in_test_version       |
+------------------------------+
| mytable                      |
+------------------------------+

执行成功

在严格模式下执行

mysql> CREATE TABLE `mytable` (->  `id` int(11) NOT NULL AUTO_INCREMENT,->  `name` varchar(20) NOT NULL,->  `content` text NOT NULL default '',->  PRIMARY KEY (`id`)-> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ERROR 1101 (42000): BLOB/TEXT column 'content' can't have a default value

执行失败,提示content字段是TEXT类型,不能使用默认值。

总结,使用mysql严格模式可以使数据更加安全严格,缺点是减少了对空数据入库的兼容性。建议开发环境使用严格模式以提高代码的质量及对数据的严谨性。

mysql 严格模式 Strict Mode说明相关推荐

  1. mysql strict_关于mysql 严格模式 Strict Mode的说明讲解

    1.开启与关闭Strict Mode方法 找到mysql安装目录下的my.cnf(windows系统则是my.ini)文件 在sql_mode中加入STRICT_TRANS_TABLES则表示开启严格 ...

  2. MySQL严格模式Strict Mode说明

    何为MySQL的严格模式,简单来说就是MySQL自身对数据进行严格的校验(格式.长度.类型等),比如一个整型字段我们写入一个字符串类型的数据,在非严格模式下MySQL不会报错,同样如果定义了char或 ...

  3. mysql strict_mysql 严格模式 Strict Mode说明(转)

    1.开启与关闭Strict Mode方法 找到mysql安装文件夹下的my.cnf(windows系统则是my.ini)文件 在sql_mode中增加STRICT_TRANS_TABLES则表示开启严 ...

  4. mysql 严格模式_MySQL 开启/关闭 严格模式(Strict Mode)

    [广告:最高 ¥2000 红包]阿里云服务器.主机等产品通用,可叠加官网常规优惠使用 | 限时领取 查看 Mysql 是否开启严格模式: 打开 MySQL 配置文件 my.cnf(windows为my ...

  5. mysql严格模式 报错_mysql严格模式

    mysql严格模式 严格模式例子1 2 3 4 5 6 7DB::table('table_name') ->where('status', 1) ->select(DB::raw('su ...

  6. mysql严格模式 报错_代码一上传服务器就报错-尝试开启 MySQL 严格模式

    先前遇到过一个非常奇怪的问题,写 MySQL 数据库的 web 程序的时候,在自己本机环境下跑的好好的,一上传到远程服务器环境上,就各种报错,各种异常.一般来讲,问题的根源多半是环境差异导致的,且大概 ...

  7. mysql内置的变量,MySQL服务器模式及相关内置变量

    本章我们主要包含两部分的内容: MySQL服务器模式 MySQL内置变量 1. MySQL服务器模式 不同的MySQL客户端可以通过不同的模式操作MySQL Server.DBA可以设置一个全局模式, ...

  8. mysql use mysql_1、设置mysql远程访问执行mysql 命令进入mysql 命令模式,执行如下SQL代码mysql use mysql; mysql GRANT ALL ON ...

    1.设置mysql远程访问 执行mysql 命令进入mysql 命令模式,执行如下SQL代码mysql> use mysql; mysql> GRANT ALL ON *.* TO adm ...

  9. Mysql主从模式部署过程

    MySQL主从模式可以从一个MySQL数据库服务器主节点复制到一个或多个从节点.本文使用 半同步复制模式 . mysql主从复制用途: 实时灾备,用于故障切换(高可用) 读写分离,提供查询服务(读扩展 ...

最新文章

  1. 局部加权线性回归(Local Weighted Linear Regression)+局部加权回归+局部线性回归
  2. 关于umask和 find命令
  3. openCV鼠标事件实例
  4. Excel鲜为人知的35招秘技
  5. 软件工厂是否真的可能存在?
  6. sqlserver和mysql运营_SQLServer和MySql的区别总结
  7. 使用React和Tailwind CSS搭建项目模板
  8. nodejs异步读取文件与同步读取文件的区别
  9. Spring Tool Suite 4安装Lombok
  10. java switch case多个条件_JAVA基础程序设计之判断与循环
  11. 2018 Python 开发者调查报告发布,数据出乎你意料吗?
  12. 此页的状态信息无效,可能已损坏---应用程序中的服务器错误---
  13. python rbf神经网络_RBF神经网络是什么?
  14. ELAS_ROS算法 在 KITTI数据集 实践
  15. 网络工程师面试题收集
  16. 民进自强进修学院 计算机,#民进自强#中复班学生周记摘录
  17. java api 已取消到该网页的导航问题
  18. 共阳极管的代码_共阳极数码管显示
  19. sql for 循环
  20. 10.5国庆作业(IIC实验)

热门文章

  1. 输入一行字符,将其中的大写字母转换成小写字母,其中的小写字母转换成大写字母C++--tolower、isalpha等函数的使用
  2. html 倒计时弹出框,JavaScript 实现简单的倒计时弹窗DEMO附图
  3. 12123怎么会显示服务器异常,12123怎么交罚款怎么总是支付失败
  4. 中国人工智能大会CCAI 2016圆满落幕
  5. 《使用图LSTM进行语义对象解析》--论文阅读笔记
  6. 跳坑有心得,Happy research! Win10 + GTX 2080Ti + tensorflow-gpu-1.14.0 安装; timestamp=2019-10-3
  7. “数据信托”探析:基于数据治理与数据资产化的双重视角
  8. 读《汽车构造透视图典》
  9. 数智创新时代,有生态才有未来
  10. Linux驱动设计(一):驱动是什么?