当前位置:Gxlcms > 数据库问题 > MySQL 复制 主键冲突

MySQL 复制 主键冲突

时间:2021-07-01 10:21:17 帮助过:24人阅读

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `c1` int(11) DEFAULT NULL,

  `c2` varchar(100) DEFAULT NULL,

  PRIMARY KEY (`id`),

  UNIQUE KEY `c1` (`c1`)

) ENGINE=InnoDBAUTO_INCREMENT=7

slave 上 SHOW CREATE TABLE `test_autoinc` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `c1` int(11) DEFAULT NULL,

  `c2` varchar(100) DEFAULT NULL,

  PRIMARY KEY (`id`),

  UNIQUE KEY `c1` (`c1`)

) ENGINE=InnoDBAUTO_INCREMENT=6

可以看到执行了replace into之后会发现字段增长不一样了,此时master的自增列为7,而slave的自增列为6,与表内最大值相同,若发生主备切换,slave提供服务,此时通过自增列插入主键6的记录,就会发生主键冲突

解决的办法有两个:

1st suggested fix is: use a delete event and a insert event  to record this replace.
2nd suggested fix is: update the auto_incrment in update statements.

我看有的解决是这样的,但是不知道在数据库怎么实现的

if not exists (select phone from t where phone= ‘1‘)             insert into t(phone, update_time) values(‘1‘, getdate())  else

          update t set update_time = getdate() where phone= ‘1‘



MySQL 复制 主键冲突

标签:replace   master   values   网上   

人气教程排行