vlambda博客
学习文章列表

mycat 添加数据时报错主键已存在(duplicate entry '22' for key 'PRIMARY')问题解决

前端时间项目优化修改,因使用的mycat 分库分表机制,部分库表用到了分库配置,本地测试修改部分正常。但上到服务器上时添加数据会报错主键id已存在,duplicate entry '22' for key 'PRIMARY'。经过一段时间排查分析,确定为经过mycat添加数据时会返回以前已经存在的id,mycat采用的是主键id自增机制,所以导致无法正常添加。mycat配置没有问题,最终定位在本地是用mysql数据连接,使用的是mysql添加数据,服务器使用的是mycat连接,使用的是mycat添加数据。mycat无法识别到mysql增加数据时的自增id,导致mysql的自增id与mycat的自增id不同步。问题原因找到了,那就可以解决这个问题了。修改mycat库中的mycat_sequence表中的对应分库表的最大id值数据,然后重启mycat就正常了。mycat与mysql结合使用,更好的实现了读写分离,分库分表管理。