mysql 5.5和5.6版本关于timestamp not null类型字段关于null的处理
Server version: 5.5.33-31.1-log Percona Server (GPL), Release rel31.1, Revision 566
mysql> CREATE TABLE `t1` (
`ID` int(11) NOT NULL DEFAULT '1',
`NAME` varchar(10) NOT NULL DEFAULT '',
`CREATE_TIME` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'
) ENGINE=InnoDB DEFAULT CHARSET=utf8
mysql> select * from t1;
Empty set (0.00 sec)
mysql> insert into t1 (create_time) values (null);
Query OK, 1 row affected (0.00 sec)
mysql> select * from t1;
+----+------+---------------------+
| ID | NAME | CREATE_TIME |
+----+------+---------------------+
| 1 | | 2015-04-15 17:27:09 |
+----+------+---------------------+
1 row in set (0.00 sec)
从上面实验看,在5.533版本中,create_time虽然定义为not null ,但是实际是能插入null只的,而且自动转换为了current_time。接下来看5.6的操作:
Server version: 5.6.22-71.0-log Percona Server (GPL), Release 71.0, Revision 726
mysql> CREATE TABLE `t1` (
`ID` int(11) NOT NULL DEFAULT '1',
`NAME` varchar(10) NOT NULL DEFAULT '',
`CREATE_TIME` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
mysql> select * from t1;
Empty set (0.00 sec)
mysql> insert into t1 (create_time) values (null);
ERROR 1048 (23000): Column 'CREATE_TIME' cannot be null
mysql> select * from t1;
Empty set (0.00 sec)
直接报错,拦截语句插入。在5.6中是通过开启参数来实现解决这个BUG的。下面是摘自官方文档的描述
With explicit_defaults_for_timestamp enabled, inserting NULL into a TIMESTAMP NOT NULL column now produces an error
(as it already did for other NOT NULL data types), instead of inserting the current timestamp. (Bug #68472, Bug #16394472)
最新文章
- GridView 树形结构分组的功能
- 2.Linux如何学习
- myBatis+SpringMVC+Maven整合
- Linux 启动项介绍
- Linux Centos7下安装Python
- NeHe OpenGL教程 第十二课:显示列表
- CentOS中通过stat查看文件的元数据
- selenium 一个简单的流程
- HDU 5727 Necklace 环排+二分图匹配
- 使用int?来确保值类型也可以为null
- [转]flume-ng+Kafka+Storm+HDFS 实时系统搭建
- jQuery delegate方法实现Ajax请求绑定事件不丢失
- Java中的不可变类
- Flex中的DataGrid报错(二)
- Fragment多重嵌套实现电影,影院展示页
- JS显示动态的系统时间--JavaScript基础
- Oracle修改字段类型方法小技巧
- 错误 frm-40654 记录已经被另一个用户更新,重新查询以查看修改
- thymeleaf下拉框从后台动态获取集合数据并回显选中
- eMMC基础技术9:分区管理