今天就碰到了一个较初级的问题,居然为找这个参数花了好半天时间,深以为不齿。
需求是这样的,有个表的某个字段需要从datetime改成timestamp类型。原结构如下:
create table tmp1(
id int primary key auto_increment,
`gmt_create` datetime DEFAULT NULL COMMENT '创建时间'
)
修改语句:
alter table tmp1 modify gmt_create timestamp DEFAULT NULL COMMENT '创建时间'
报错信息:
ERROR 1067 (42000): Invalid default value for 'gmt_approved' 原来是因为:
explicit_defaults_for_timestamp=0,表示使用默认的timestamp默认格式;
timestamp类型的默认格式是什么样的呢?
1.和其它字段类型不一样,这个字段默认为not null.而且不允许设置default null.
2.第一列timestamp字段,如果不强制指定默认值或on update属性的话,就会默认设为DEFAULT CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP。
3.非第一列timestamp字段,如果不强制指定默认值,DEFAULT '0000-00-00 00:00:00'
4.往该列中插入null值,会自动转化为默认值;
如果explicit_defaults_for_timestamp=1,则关闭timestamp default的特性:
1.如果没有被显示指定not null,则默认为null;
2.默认值也会是null而非CURRENT_TIMESTAMP;
3.如果指定了not null属性,inset式不指定该字段的值,strict sql_mode下,会报错。非strict sql_mode下插入'0000-00-00 00:00:00';
需要仔细考虑下面的场景:
1.timestamp not null default CURRENT_TIMESTAMP,当explicit_defaults_for_timestamp由0转为1时会带来什么业务影响?
这样的转化,如果该timestamp字段有默认值,会造成原本insert 该timestamp字段value为null的语句会插入失败,影响业务;
2.datetime default null 转成 timestamp default CURRENT_TIMESTAMP,又会带来什么业务影响呢?
做这样的字段转化,会把原本该字段为null的值都转化为CURRENT_TIMESTAMP,如果历史数据多的化,这样的转化是非常耗资源的。同时还需考虑值的转变对业务带来的影响。
 

explicit_defaults_for_timestamp引发的狗血剧情的更多相关文章

  1. Javascript闭包(狗血剧情,通俗易懂)

    我们先来看一个闭包的函数: function a() { var i = 0; function b() { alert(++i); } return b; } var c = a(); c(); c ...

  2. 两分钟观看 nodejs、 iojs、 npmjs 之间的狗血剧情

    开门大吉,欢迎光临.这是 乐玩nodejs npm工具库 微信公众号的第一篇文章,那就先来说说 nodejs/npm 的小秘密,话不多说,赶快开始: 通过一个时间线简要描述下 2008 年 V8 引擎 ...

  3. 职业生涯手记——电视剧剧情O.O

    很多电视剧.偶像剧.电影里出现过一些场景,从来没想过狗血剧情是来源于现实.. 直到上周一开始,我慢慢相信了.. 事情是这样的. 我们小组有个组员H,从上周一开始他每天都去公司的座机电话接1~2个电话, ...

  4. 《Xenogears》(异度装甲)隐含的原型与密码

    <Xenogears>(异度装甲)隐含的原型与密码 X 彩虹按:一种高次元的“生命体”,因“事故”被抓来当成“超能源”,其实那不只是“无限的能源”而已,“它”是有意志的!在我们眼里看来,这 ...

  5. 【小白的CFD之旅】02 江小白

    虽然已经是9月份了,但是西南地区的湿热天气依然将小白热成了狗.独自一个人来到这号称天府之国的西南城市,小白却一点都没感受到这天府之国的友好.毒辣的阳光像利剑一样照射到身上,让人感觉如在蒸笼中一样.从炎 ...

  6. 玉渊潭赏樱花有感:从无到有写一个jQuery开源插件

    “玉渊潭公园樱花节”是每年樱花绽放时,都会在玉渊潭公园樱举办樱花节,游客前往玉渊潭公园,可以欣赏到20个品种2000株樱花.2016玉渊潭樱花节时间:3月中旬-4月中旬观赏最佳,2016年3月23日开 ...

  7. 论近年来IT媒体的怪现象

    之前在Svbtle上看过一篇文章干掉这帮搞IT新闻的!,作者因为CNET曲解原意,称Instagram要单方面售卖用户自己照片的乌龙事件,致使内心遭受严重刺激,怒吼出「科技媒体记者都应该被枪毙」的言论 ...

  8. lcd ram/半反穿技术解析【转】

    转自:http://bbs.meizu.cn/viewthread.php?tid=3058847&page=1 我的话题应该会比较长一些.但是大致板块如下:1.LCD RAM;-->此 ...

  9. 说说CSS学习中的瓶颈

    虽已数年,但未就学习专门写过文章,这回破处了.苍蝇不叮没有缝隙的鸡蛋,领导不做没有跟拍的表演,同样,想到写CSS学习的文章也是有原因的(虽然我的不少行为没有原因). 情景再现(尊重隐私,下面故事中人名 ...

随机推荐

  1. vue 自定义组件销毁

    今天在开发电商vue前端项目时,用户每次登出再换其它用户登录时,页面显示的用户名和左则导航都还是上个用户的,刚开始以为是localStorage中没有清除全局数据,然后在用户点击退出系统时手动清除lo ...

  2. 云笔记项目-Spring事务学习-传播REQUIRES_NEW

    接下来测试事务传播的REQUIRES_NEW. Service层 Service层代码在这里不展示了,主要将EMPService1Impl类中的方法事务传播属性设置为REQUIRED,EMPServi ...

  3. C10K

    参考 https://www.jianshu.com/p/ba7fa25d3590

  4. Oracle主从同步、双向同步的配置

    (本教程展示了Windows环境的oracle数据库主从同步,Linux环境一样也可以) (把主数据库obpm 和从数据库orcl 用实际的数据库名给替换掉) (配置主从同步后,再配置双向同步,可能会 ...

  5. C语言之标准头文件模板

    /*======================================================================================* * 版权 : xxx ...

  6. c# webBrowser 转图片

    class NativeMethods { [ComImport] [Guid("0000010D-0000-0000-C000-000000000046")] [Interfac ...

  7. docker log driver

    驱动程序 描述 none 容器没有日志可用,docker logs 什么都不返回 json-file 日志格式化为 JSON.这是 Docker 默认的日志驱动程序. syslog 将日志消息写入 s ...

  8. apache-tomcat 部分中文.html .jsp 连接 404问题

    修改文件到 自己的安装目录:\apache-tomcat-7.0.79\conf 添加   Connector URIEncoding="utf-8" <Connector ...

  9. 非root用户启动redis容器报错mkdir: cannot create directory '/bitnami/redis': Permission denied

    问题:使用docker启动容器时,报错如下 zh@debian:~/testPath$ docker-compose up redis Starting testpath_redis_1 ... do ...

  10. 网址导航18B

    [名站] 百度 网易 腾讯 新华 中新 凤凰 [新闻] 联合早报  南方周末  澎湃新闻 [系统] 宋永志 蒲公英 技术员 秋叶系统 装机网 系统之家 [软件] 星愿浏览器 暴风激活 贱人工具箱 微P ...