我有一个包含以下列的表
`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.
所以我希望列能够获得当前时间戳
数据通过春季掌握。
这是预期的行为吗?
答案 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
未设置为复制。设置此项解决了问题