mysql_replication - mysql主从复制中, 若从库有额外字段, 如何设置其默认值
PHPz
PHPz 2017-04-17 13:17:06
[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数据的任何insertupdate操作, 主从同步, 对应的从库中的A表, 都会自动记录最后insertupdate的时间.

但实际观察发现:

  • 主库中有新的数据插入时,从库中last_updated字段的值为null(预期为CURRENT_TIMESTAMP).

  • 主库中有新的数据修改时,从库中last_updated字段的值不变(预期为更新到最新时间).

请问这是为什么. 我本想在从库中, 利用last_updated字段做数据迁移的增量更新依据的, 现在发现没法做.

PHPz
PHPz

学习是最好的投资!

全部回复(1)
PHPz

last_updated 类型:timestamp 默认值:CURRENT_TIMESTAMP
这个可以记录插入时间;
如果记录每次的更新时间,可以写个触发器来记录

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号