MYSQL Timestamp字段插入NULL值

时间:2015-02-02 12:34:16

标签: mysql jdbc

我有一个包含以下列的表

  `update_ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

我使用复制设置了两个数据库。在master上插入null到上面的列时,插入当前时间戳。

但被复制到奴隶的同一记录会产生错误。 错误是列

不允许Null值

唯一的区别是在从属DB中,特定列在表中被索引。

Mysql引用有以下行

By default, TIMESTAMP columns are NOT NULL, cannot contain NULL values, and assigning NULL assigns the current timestamp.

所以我希望列能够获得当前时间戳

数据通过春季掌握。

这是预期的行为吗?

2 个答案:

答案 0 :(得分:0)

<强> TL;博士

NOT NULL允许您传递空值,该值通常为current_timestamp

<强>原始

  

插入为“null”。 INSERT INTO表值(null);

由于NOT NULL要求而被禁止(NOT NULL的点是禁止空值) - 您不应该提及该值。略过该值,默认值将使其处于正确的位置。

我们来看看docs

  

此外,您可以通过为其分配NULL值来初始化或更新任何TIMESTAMP列到当前日期和时间,除非已使用NULL属性定义以允许NULL值

由于您的NOT NULL要求,您正在允许空值。为了使你的论证有效,你需要删除它。

答案 1 :(得分:0)

发现了这个问题。国旗

explicit_defaults_for_timestamp

未设置为复制。设置此项解决了问题