MYSQL时间戳字段插入空值

MYSQL时间戳字段插入空值,mysql,jdbc,Mysql,Jdbc,我有一张下栏的表格 `update_ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 我使用复制设置了两个数据库。在master上,当向上述列插入null时,将插入当前时间戳 但复制到从属服务器上的同一记录会产生错误。错误是该列不允许使用Null值 唯一的区别是,在从属数据库中,特定列在表中被索引 Mysql引用包含以下行 By default, TIMESTAMP columns a

我有一张下栏的表格

  `update_ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
我使用复制设置了两个数据库。在master上,当向上述列插入null时,将插入当前时间戳

但复制到从属服务器上的同一记录会产生错误。错误是该列不允许使用Null值

唯一的区别是,在从属数据库中,特定列在表中被索引

Mysql引用包含以下行

By default, TIMESTAMP columns are NOT NULL, cannot contain NULL values, and assigning NULL assigns the current timestamp.
因此,我希望该列获得当前的时间戳

数据通过弹簧输入主机

这是预期的行为吗?

tl;dr

非空
允许您传递一个空值,该空值通常会成为
当前\u时间戳

原创

将其插入为“null”。插入表值(空)

由于
notnull
要求,这是禁止的(使用
notnull
的要点是禁止空值)——您不应该提及该值。跳过该值,默认值将位于正确的位置

让我们看一下:

此外,您可以通过为任何时间戳列指定空值来初始化或更新当前日期和时间的时间戳列,除非已使用NULL属性定义该列以允许空值


由于您的
notnull
要求,您允许空值。为了使您的论点有效,您需要删除它。

发现了问题。旗帜

explicit_defaults_for_timestamp

未在复制中设置。设置此选项可以解决问题

“插入空值时”是什么意思?显示insert语句。您是否正在传递null,并希望它自动成为当前的时间戳?它被插入为“null”。插入表值(空);这是禁止的,因为非空要求:我的答案。我已经更新了问题。Mysql引用允许将空值传递给时间戳字段。@ShabinHashim编辑了答案。“非空值允许您传递一个空值,该空值通常会成为当前的\u时间戳。”因为此数据被插入到master。我的问题是,为什么同一个插入无法插入复制的数据库。