因此,由于
这就是我如何创建我的表,我有复合键列。
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);