表datatime类型字段中使用默认值,出现了binlog时间和默认值时间不一样的情况

【 TiDB 使用环境】生产环境
【 TiDB 版本】 v7.5.2
【遇到的问题:问题现象及影响】

表字段中使用默认值,出现了binglog时间和默认值时间不一样的情况,如图:

两个字段的类型如下:

  `createTime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间',
  `updateTime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录更新时间',

代码中只插入了如下字段:

undo log,redo log都在binlog 之前。binlog的时间比数据时间慢是正常的呀。

1 个赞


该表只有插入,没有更新的

我的理解是这样的,snapshot是数据快照的时间点。数据在最后一次commit后数据才能被读取到。那么这次commit 时间点应该比你binlog的时间点稍微晚一丢丢,也就是24s后。在23s 的快照时间点上,数据其实还未真正的commit,表实际上是没有数据的。

正常逻辑,update 时间与 commit 时间本来就不是一样的

提交才落盘吧,我也遇到个奇葩的问题,UpdatedAt 非空默认变成了 0000-00-0 00:00::00

插入时间和提交时间的差别

此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。