PRIMARY KEY可以重复执行插入

PRIMARY KEY数据可以被重复插入,最后只有一条数据存在?

1 个赞

麻烦您把问题详细说明下,比如哪个版本,具体什么sql,多谢。 如果可以的话,举一个例子,primary key 怎么重复插入了

1 个赞

版本是4.0.2

CREATE TABLE account (
_id bigint(20) NOT NULL,
_region varchar(256) NOT NULL,
_ts bigint(20) NOT NULL DEFAULT 0,
_create_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
_update_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
id varchar(32) DEFAULT NULL,
sub_type smallint(6) NOT NULL,
account_type smallint(6) NOT NULL,
principle varchar(128) NOT NULL,
credential varchar(512) DEFAULT NULL,
hashed_credential varchar(512) DEFAULT NULL,
salt varchar(256) DEFAULT NULL,
encrypt_type smallint(6) DEFAULT NULL,
status smallint(6) DEFAULT NULL,
create_time bigint(20) NOT NULL,
modify_time bigint(20) NOT NULL,
creator_id varchar(32) DEFAULT NULL,
modifier_id varchar(32) DEFAULT NULL,
is_deleted tinyint(1) NOT NULL,
is_master tinyint(1) DEFAULT 0,
party_id varchar(32) DEFAULT NULL,
PRIMARY KEY (_id),
KEY _idx_region_auto (_region),
KEY _idx_ts_auto (_ts),
KEY _idx_update_time_auto (_update_time)
)

图中的两条插入都成功了,_id 均为42964237196198324,为主键

primary_key.txt (36.3 KB)

1 个赞

您好,请问你们这个 log 是怎么得来的?

1 个赞

我们自已打的,binlog同步落库打的

1 个赞

tidb 不允许 primary key 重复插入,麻烦你们确认一下同步库的 log 逻辑以及同步过来的数据目前是什么样子,我们也尝试根据你们的表结构复现一下。

1 个赞

insert_duplicate_success.txt (949 字节)

这么复现就可以了,单纯用Mysql客户端执行就可以出现

1 个赞

收到,这里尝试本地复现下,如果有最新消息会及时跟帖~

另外,这个是悲观锁还是乐观锁模型?

1 个赞

您好,我们已经修复这个问题 https://github.com/pingcap/tidb/pull/19019 。在下一个版本(4.0.5)就会得到修复了。

1 个赞

好的,谢谢

1 个赞

感谢反馈 :handshake:,请关注下 TiDB 官网 v4.0.5 的发版情况哈~~

1 个赞