一、背景
公司数据从mysql同步到tidb上,然后开发小哥在不显示指定自增主键的情况下便爆出主键冲突的问题
二、原因
1.由于插入的时候有程序在写入
这种在mysql上也有,这里不详细解释了,属于正常现象
2.tidb特性造成的主键冲突
tidb的ip | 方便说明问题的代码 | 当前自增id值 |
---|---|---|
192.168.1.1 | a | 153 |
192.168.1.2 | b | 30002 |
192.168.1.3 | c | 60003 |
假如这时候显式插入一条60004,如果这个操作是在c节点执行的,那么c节点的下一个自增值是60005,这样没有问题,但如果这个操作是在b节点执行的,那么c节点的下一个自增值还是60004,这样在c节点进行隐式插入的时候就会有主键冲突的现象,这点在tidb中要注意