这就是我如何创建我的表,我有复合键列。
CREATE TABLE platformExchangePair(
pairName VARCHAR(15),
idExchangePlatform INT,
PRIMARY KEY (pairName,idExchangePlatform),
FOREIGN KEY (idExchangePlatform) REFERENCES exchangePlatform(idExchangePlatform)
);现在,我试图插入这两个值,除了最后一个字符t‘之外,这些值是相同的:
value1 = testbtc:testusd
testbtc:testusdt = value2
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 这是没有意义的,他们没有重复,是不是在我的桌子上遗漏了什么?
发布于 2021-02-10 21:06:19
我怀疑您使用的MySql版本是5.5.x,在这种情况下,当您试图为VARCHAR列插入一个大于其定义长度的值时,在您的情况下,该值会被截断为最大长度。
因此,因为'testbtc:testusdt'的长度是16,所以它被截断为'testbtc:testusd' (前15个字符),结果是dupicate。
请参阅简化的演示。
您能做的最好是增加列的大小:
ALTER TABLE platformExchangePair MODIFY COLUMN pairName VARCHAR(20);https://stackoverflow.com/questions/66144836
复制相似问题