Tidb insert on duplicate key 或 replace into 报主键冲突异常

原理是这样的: 你程序执行的时候已经尝试过这个冲突的 _tidb_rowid 了,所以下一次执行就会采用下一个 _tidb_rowid

举个例子来说:
假如 _tidb_rowid 为10 的 这条数据已经存在, 那么你程序第一次执行的时候会尝试插入 _tidb_rowid 10,然后失败了,这个时候你再手动执行,就会尝试插入_tidb_rowid 11 的数据,然后就成功了。

你也可以通过插入成功的那条数据倒查一下 _tidb_rowid 验证一下,是不是和前面冲突的 _tidb_rowid 不一致

1 个赞