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主从复制用途: 实时灾备,用于故障切换(高可用) 读写分离,提供查询服务(读扩展 ...
最新文章
- OAuth 2.0中的scope和RBAC中的role有什么关系
- 异构并行编程(CUDA)结课证书
- 进程隐藏与进程保护(SSDT Hook 实现)(二)
- IBASE category 03 download
- C# 中的占位符本质
- idea导入java项目步骤,idea与eclipse项目相互导入的过程(图文教程)
- 股票中买1、买2、买3和卖1、卖2、卖3
- eterm 汉字编码一点也不难
- 深入浅出事件流处理NEsper(三)
- 如何复制百度文库上的东西
- 微信数据如何与服务器配置,微信公众平台里的服务器配置设置是干什么用的
- Keil C51对C语言的关键词扩展之八: far
- 好好学习:个人知识管理精进指南
- 郭靖大侠的IT为学之路
- python 创建线程
- c++中fabs()和abs()的区别
- 【转】windows安装jira
- 情人节送ta一朵独一无二的玫瑰花
- steam游戏上架流程一:使用官方SDK上传游戏
- 关于android的sqlite问题,阳光沙滩-android studio的sqlite使用出现问题,是什么情况呢?...