现有一套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字段做数据迁移的增量更新依据的, 现在发现没法做.
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
last_updated 类型:timestamp 默认值:CURRENT_TIMESTAMP
这个可以记录插入时间;
如果记录每次的更新时间,可以写个触发器来记录