MySQL timestamp 的一个坑

前段时间用数据库,发现mysql里面的timestamp数据总是自动更新,但是自己设置的时候并没有设成 on update有啥操作。
网上看到如下一段,谨记。

在CREATE TABLE语句中,第1个TIMESTAMP列可以用下面的任何一种方式声明:
1: 如果定义时DEFAULT CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP子句都有,列值为默认使用当前的时间戳,并且自动更新。
2: 如果不使用DEFAULT或ON UPDATE子句,那么它等同于DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP。
3: 如果只有DEFAULT CURRENT_TIMESTAMP子句,而没有ON UPDATE子句,列值默认为当前时间戳但不自动更新。
4: 如果没用DEFAULT子句,但有ON UPDATE CURRENT_TIMESTAMP子句,列默认为0并自动更新。
5: 如果有一个常量值DEFAULT,该列会有一个默认值,而且不会自动初始化为当前时间戳。如果该列还有一个ON UPDATE CURRENT_TIMESTAMP子句,这个时间戳会自动更新,否则该列有一个默认的常量但不会自动更新。

经他人提醒,Mysql5.6.6版本里面增加了一个参数 explicit_defaults_for_timestamp,其默认值为False,就是它搞得鬼。它会让表定义非所见即所得,存在极大隐患,所以,这个参数需要设置成为 True

时间: 2024-08-25 19:20:53

MySQL timestamp 的一个坑的相关文章

MySQL JDBC的queryTimeout的一个坑

遇到一个MySQL JDBC执行execute方法时指定queryTimeout的坑,比较恶心,算是它的BUG,也可以不算,^_^,为啥这么说?看一下下面的解释: 现象: 用同一个Connection执行大批量SQL的时候,导致了OOM现象. 细节现象描述: 1.SQL是从某个存储设备上拿到的,不会直接占用大量的内存,每次只会取最多1千条数据过去,也会判定容量不超过多少M. 2.每一批SQL执行会单独创建Statement对象,执行一批SQL后,会将这个Statement关闭掉. 3.SQL语句

MySQL timestamp的类型与时区实例详解_Mysql

 MySQL timestamp的类型与时区 MySQL的timestamp类型时间范围between '1970-01-01 00:00:01' and '2038-01-19 03:14:07',超出这个范围则值记录为'0000-00-00 00:00:00',该类型的一个重要特点就是保存的时间与时区密切相关,上述所说的时间范围是UTC(Universal Time Coordinated)标准,指的是经度0度上的标准时间,我国日常生活中时区以首都北京所处的东半球第8区为基准,统一使用东8区

MySQL怎样处理一个溢出的磁盘

mysql 当出现一个磁盘溢出的情况时,MySQL做下列事情: 它每分钟检查一次看是否有足够空间写入当前行.如果有足够的空间,它继续好像发生什么事情. 每6分钟它将有关磁盘溢出的警告写入日志文件. 为了缓和这个问题,你可以采取下列行动: 继续,你只需释放足够的空闲磁盘空间以便插入所有记录. 放弃线程,你必须发一个mysqladmin kill到线程.在下一次检查磁盘时,线程将被放弃(在1分钟内). 注意,其他线程可能正在等待引起"磁盘溢出"条件的表.如果你有几个"锁定的&qu

如何使用jQuery+PHP+MySQL来实现一个在线测试项目

  如何使用jQuery+PHP+MySQL来实现一个在线测试项目         本文将结合实例给大家介绍如何使用jQuery+PHP+MySQL来实现在线测试题,包括动态读取题目,答题完毕后台评分,并返回答题结果. 在上一篇文章中,我们介绍了使用jQuery实现的测试题效果.那么本文将结合实例给大家介绍如何使用jQuery+PHP+MySQL来实现在线测试题,包括动态读取题目,答题完毕后台评分,并返回答题结果.这是一篇WEB综合应用文章,建议阅读本文的您应该具备HTML,jQuery以及PH

Mysql Timestamp 无法时间戳查询

问题描述 Mysql Timestamp 无法时间戳查询 在做SQL优化时,发现时间查询上耗时较大,想优化一下. 字段类型是Timestamp 查询SQL:工作正常SQL:SELECT count(*) FROM TRADE_RECORD t where UNIX_TIMESTAMP(t.TRADE_TIME) BETWEEN 1462723200 AND 1462723200; 工作失败SQL:SELECT count(*) FROM TRADE_RECORD t where t.TRADE_

mysql-请问往MYSQL里导入一个SQL表,为什么会报这个错误?

问题描述 请问往MYSQL里导入一个SQL表,为什么会报这个错误? 开始导入----------> 然后就提示--------> 文件路径: 我选择的路径没错额:D:源代码下载存储day7-mysql多表资料与作业EMPDEPT.sql 信息日志如下: [Err] 1051 - Unknown table 'dept' [Err] -- ---------------------------- -- Table structure for DEPT DROP TABLE DEPT; CREAT

mysql 如何通过一个sql语句搜出比例关系

问题描述 mysql 如何通过一个sql语句搜出比例关系 例如 一个表格里有 商品,价格,日期 三个字段 a 10.2,20151008 a 9.2,20151009 a 7.2,20151010 b 11.2,20151008 b 10.2,20151008 我要搜 在历史上各个商品价格低于10¥的次数占该商品出现的总次数的百分比,应该如何写mysql语句呢? 谢谢了 搜出结果要类似 a 2/3 b 0/2 这样的sql语句怎么写呢? 解决方案 假设表名是ProductPrice, 商品,价格

MySQL 怎么把一个数组插入数据库?

问题描述 MySQL 怎么把一个数组插入数据库? array(22) { ["user_name"]=> array(4) { [0]=> string(3) "name1" [1]=> string(3) "name2" [2]=> string(3) "name3" [3]=> string(3) "name4" } ["sex"]=> array

救命啊 我快疯了-关于MYSQL只能识别一个汉字的问题

问题描述 关于MYSQL只能识别一个汉字的问题 为什么只能识别"女"这个汉字 我之前创建数据库时,插入一行数据时,里面带着个"女"字,后来我用myeclipse连接数据库出现了"data too long for column"错误,除了"女"字全都无法插入数据库,再后来 我修改my.ini文件,将 sql-mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBST