gpt4 book ai didi

java - MySQL 将组成的唯一索引截断为 64 个字符

转载 作者:可可西里 更新时间:2023-11-01 06:51:36 24 4
gpt4 key购买 nike

我在使用 MySQL 组合唯一键时遇到问题。

它由 URL、整数值和日期字段组成。

但是当我尝试插入行时,出现异常:

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry 'http://cars.auto.ru/cars/used/sale/16152870-c13f1.html-2012-02-1' for key 'one_a_day_idx'

如您所见,组合索引被截断了 64 个字符,因此它不再是唯一的(我每天从外部源检索一次数据)

但最令人困惑的是插入了记录,尽管抛出了约束违反的异常

有一个类似的问题here , 但唯一的建议是使用 SHOW CREATE TABLE 来找出索引的实际长度。

Show create tables 显示了这个:

| auto_ru_sale | CREATE TABLE `auto_ru_sale` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`template` int(11) NOT NULL,
`region` varchar(128) NOT NULL,
`URI` varchar(128) NOT NULL,
`subType` varchar(128) NOT NULL,
`cost` int(11) NOT NULL,
`productionYear` int(11) NOT NULL,
`engineVolume` int(11) NOT NULL,
`transmitionType` varchar(1) NOT NULL,
`run` int(11) NOT NULL,
`evaluationDate` date NOT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `one_a_day_idx` (`template`,`URI`,`evaluationDate`),
KEY `prodyear_idx` (`productionYear`),
KEY `evdate_idx` (`evaluationDate`),
CONSTRAINT `auto_ru_sale_ibfk_1` FOREIGN KEY (`template`) REFERENCES `auto_ru_
datatemplate` (`ID`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=127012 DEFAULT CHARSET=utf8 |

因此,我看不到索引长度有任何限制。

非常感谢大家,谁能就这个问题提供一些帮助。

最佳答案

我今天遇到了同样的问题。

我的问题是唯一索引实际上超过 64 个字符,但错误消息只显示前 64 个字符。我认为这里也是同样的情况。

所以我遇到的是一个实际的重复键,这是由一些错误的日期格式引起的。

关于java - MySQL 将组成的唯一索引截断为 64 个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9348871/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com