mysql主键的重复输入错误

  • 本文关键字:错误 mysql mysql sql duplicates
  • 更新时间 :
  • 英文 :


这就是我如何创建我的表,我有复合键列。

CREATE TABLE platformExchangePair(
pairName VARCHAR(15),
idExchangePlatform INT,
PRIMARY KEY (pairName,idExchangePlatform),
FOREIGN KEY (idExchangePlatform) REFERENCES exchangePlatform(idExchangePlatform)
);

现在,我试图插入这两个相同的值,除了最后一个字符't':

value1 = testbtc:testusd

value2 = testbtc:testusdt

INSERT INTO platformExchangePair (pairName,idExchangePlatform) 
VALUES ('testbtc:testusd',1),('testbtc:testusdt',1);

输出错误:

1 Duplicate entry 'testbtc:testusd-1' for key 'platformExchangePair.PRIMARY' SQL.sql 75 1 

这完全没有意义,它们没有重复,我的桌子上少了什么吗?

我怀疑你使用的MySql版本是5.5。在这种情况下,当您尝试为VARCHAR列插入一个值,该值长于其定义的长度,在您的情况下长于15,该值将被截断为最大长度。


因此,由于'testbtc:testusdt'的长度为16,它被截断为'testbtc:testusd'(前15个字符),结果是重复的

查看一个简化的演示。

你能做的最好的就是增加列的大小:

ALTER TABLE platformExchangePair MODIFY COLUMN pairName VARCHAR(20);

相关内容

  • 没有找到相关文章

最新更新