1
我有時會在我的應用程序日誌中出現以下錯誤插入到MySQL:「例外:SQLSTATE [23000]:完整性約束違規:1062重複項」錯誤的指數被截斷
2013/06/02 15:11:05 (Database) Exception: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '4d9acbacc6ed7dc2733025e4b8af7be4940fe5b70338789b34caea27695860fa' for key 'hash_UNIQUE'
的問題以上是被索引的值被截斷爲64個字符長,但實際列長度爲255個字符。該值的一個示例是:4d9acbacc6ed7dc2733025e4b8af7be4940fe5b70338789b34caea27695860fa2b497f6cd34851657c9d3e8e8e88713d80da1a22d8654cf98622e9af3f29481d
。
表定義爲如下:
delimiter $$
CREATE TABLE `reset` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`identity_id` bigint(20) unsigned NOT NULL,
`hash` varchar(255) NOT NULL,
`timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`upn` varchar(255) NOT NULL,
`returnurl` varchar(255) DEFAULT NULL,
`processed` char(1) DEFAULT 'N',
`referer` varchar(15) DEFAULT 'CPCUsociety.org',
PRIMARY KEY (`id`),
UNIQUE KEY `hash_UNIQUE` (`hash`),
KEY `reset_upn_ndx` (`upn`),
KEY `reset_hash_ndx` (`hash`),
KEY `reset_timestampndx` (`timestamp`),
KEY `idendity_id_for_key_idx` (`identity_id`),
CONSTRAINT `idendity_id_for_key` FOREIGN KEY (`identity_id`) REFERENCES `identity` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=585 DEFAULT CHARSET=utf8$$
我如何可以強制MySQL使用的全部價值爲指數?
我的所有研究狀態都一樣。很多人都被這個奇怪的錯誤困擾着。但是我曾經在某處看到過一個bug報告,指出索引大小已經從32個增加到了64個字符。我想知道它是否可能與某些版本有關。但是當我有機會時,我會嘗試單獨測試。 – Salsero69