mysql 严格模式 Strict Mode说明
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说明相关推荐
- mysql strict_关于mysql 严格模式 Strict Mode的说明讲解
1.开启与关闭Strict Mode方法 找到mysql安装目录下的my.cnf(windows系统则是my.ini)文件 在sql_mode中加入STRICT_TRANS_TABLES则表示开启严格 ...
- MySQL严格模式Strict Mode说明
何为MySQL的严格模式,简单来说就是MySQL自身对数据进行严格的校验(格式.长度.类型等),比如一个整型字段我们写入一个字符串类型的数据,在非严格模式下MySQL不会报错,同样如果定义了char或 ...
- mysql strict_mysql 严格模式 Strict Mode说明(转)
1.开启与关闭Strict Mode方法 找到mysql安装文件夹下的my.cnf(windows系统则是my.ini)文件 在sql_mode中增加STRICT_TRANS_TABLES则表示开启严 ...
- mysql 严格模式_MySQL 开启/关闭 严格模式(Strict Mode)
[广告:最高 ¥2000 红包]阿里云服务器.主机等产品通用,可叠加官网常规优惠使用 | 限时领取 查看 Mysql 是否开启严格模式: 打开 MySQL 配置文件 my.cnf(windows为my ...
- mysql严格模式 报错_mysql严格模式
mysql严格模式 严格模式例子1 2 3 4 5 6 7DB::table('table_name') ->where('status', 1) ->select(DB::raw('su ...
- mysql严格模式 报错_代码一上传服务器就报错-尝试开启 MySQL 严格模式
先前遇到过一个非常奇怪的问题,写 MySQL 数据库的 web 程序的时候,在自己本机环境下跑的好好的,一上传到远程服务器环境上,就各种报错,各种异常.一般来讲,问题的根源多半是环境差异导致的,且大概 ...
- mysql内置的变量,MySQL服务器模式及相关内置变量
本章我们主要包含两部分的内容: MySQL服务器模式 MySQL内置变量 1. MySQL服务器模式 不同的MySQL客户端可以通过不同的模式操作MySQL Server.DBA可以设置一个全局模式, ...
- 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 ...
- Mysql主从模式部署过程
MySQL主从模式可以从一个MySQL数据库服务器主节点复制到一个或多个从节点.本文使用 半同步复制模式 . mysql主从复制用途: 实时灾备,用于故障切换(高可用) 读写分离,提供查询服务(读扩展 ...
最新文章
- 局部加权线性回归(Local Weighted Linear Regression)+局部加权回归+局部线性回归
- 关于umask和 find命令
- openCV鼠标事件实例
- Excel鲜为人知的35招秘技
- 软件工厂是否真的可能存在?
- sqlserver和mysql运营_SQLServer和MySql的区别总结
- 使用React和Tailwind CSS搭建项目模板
- nodejs异步读取文件与同步读取文件的区别
- Spring Tool Suite 4安装Lombok
- java switch case多个条件_JAVA基础程序设计之判断与循环
- 2018 Python 开发者调查报告发布,数据出乎你意料吗?
- 此页的状态信息无效,可能已损坏---应用程序中的服务器错误---
- python rbf神经网络_RBF神经网络是什么?
- ELAS_ROS算法 在 KITTI数据集 实践
- 网络工程师面试题收集
- 民进自强进修学院 计算机,#民进自强#中复班学生周记摘录
- java api 已取消到该网页的导航问题
- 共阳极管的代码_共阳极数码管显示
- sql for 循环
- 10.5国庆作业(IIC实验)
热门文章
- 输入一行字符,将其中的大写字母转换成小写字母,其中的小写字母转换成大写字母C++--tolower、isalpha等函数的使用
- html 倒计时弹出框,JavaScript 实现简单的倒计时弹窗DEMO附图
- 12123怎么会显示服务器异常,12123怎么交罚款怎么总是支付失败
- 中国人工智能大会CCAI 2016圆满落幕
- 《使用图LSTM进行语义对象解析》--论文阅读笔记
- 跳坑有心得,Happy research! Win10 + GTX 2080Ti + tensorflow-gpu-1.14.0 安装; timestamp=2019-10-3
- “数据信托”探析:基于数据治理与数据资产化的双重视角
- 读《汽车构造透视图典》
- 数智创新时代,有生态才有未来
- Linux驱动设计(一):驱动是什么?