mysql主从复制中, 若从库有额外字段, 如何设置其默认值
现有一套mysql的主库和从库, 均有表A:
CREATE TABLE `member` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`nickname` varchar(64) DEFAULT NULL COMMENT '昵称',
) ENGINE=InnoDB AUTO_INCREMENT=10000 DEFAULT CHARSET=utf8mb4
这时, 我在从库中, 给A表添加一个last_updated字段(主库中的表结构不变):
ALTER TABLE `member` ADD COLUMN `last_updated` timestamp NULL ON UPDATE CURRENT_TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '最后更新时间' AFTER `nickname`;
修改后变成了:
主库中表A有两个字段:id
,nickname
;
而从库中表A有3个字段:id
,nickname
,last_updated
, 且每行数据的last_updated
都被填充为现在的时间.
这样修改预期达到的效果是, 主库中表A数据的任何insert
及update
操作, 主从同步, 对应的从库中的A表, 都会自动记录最后insert
或update
的时间.
但实际观察发现:
主库中有新的数据插入时,从库中
last_updated
字段的值为null
(预期为CURRENT_TIMESTAMP
).主库中有新的数据修改时,从库中
last_updated
字段的值不变(预期为更新到最新时间).
请问这是为什么. 我本想在从库中, 利用last_updated
字段做数据迁移的增量更新依据的, 现在发现没法做.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
last_updated 类型:timestamp 默认值:CURRENT_TIMESTAMP
这个可以记录插入时间;
如果记录每次的更新时间,可以写个触发器来记录