पर बनाया गया है मुझे MySQL मिश्रित अद्वितीय कुंजी के साथ समस्याएं आ रही हैं।MySQL छेड़छाड़ अद्वितीय वर्णों को 64 वर्णों
इसमें यूआरएल, पूर्णांक मूल्य और दिनांक फ़ील्ड शामिल है।
लेकिन जब मैं पंक्ति सम्मिलित करने का प्रयास करें, मैं एक अपवाद प्राप्त करें:
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 वर्णों से छोटा कर दिया गया है, और इस वजह से यह एक अद्वितीय किसी भी अधिक (मैं नहीं है ', बाहरी स्रोत दिन में एक बार)
लेकिन सबसे भ्रामक है कि रिकॉर्ड डाला गया था से डेटा प्राप्त करने हूँ हालांकि बाधा उल्लंघन के बारे में एक अपवाद
फेंक दिया गया था वहाँ एक समान प्रश्न 0 था, लेकिन सूचकांक की वास्तविक लंबाई जानने के लिए एकमात्र सलाह दिखाने के लिए तालिका बनाएं।
| 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 |
तो, मैं सूचकांक लंबाई के लिए कोई सीमाएं नहीं देखते हैं:
शो टेबल बना यह पता चलता है।
हर किसी के लिए बहुत धन्यवाद, जो इस मुद्दे के बारे में कुछ मदद दे सकते हैं।
क्या आपने कभी अपनी समस्या का समाधान निकाला है? हमारे पास एक वर्चर (255) फ़ील्ड पर एक अद्वितीय इंडेक्स के साथ एक समान समस्या है। स्पष्ट रूप से जेडीबीसी/जेपीए एक MySQLIntegrityConstraintViolationException फेंकता है जिसमें स्ट्रिंग मान के पहले 64 वर्ण शामिल हैं जिन्हें हम सम्मिलित करने का प्रयास कर रहे हैं। हालांकि, MySQL वर्कबेंच के माध्यम से सीधे वही मान डालने से समस्या के बिना ठीक काम करता है। इससे मुझे विश्वास होता है कि यह जेपीए या जेडीबीसी चालक से संबंधित हो सकता है। – tvirtualw
हमें हमारी समस्या का समाधान मिला। डिफ़ॉल्ट रूप से MySQL संयोजन केस असंवेदनशील है। हमारे टेबल में डालने के लिए हमने जो मूल्य डालने की कोशिश की थी, वही अक्षर थे और कभी-कभी वे सिर्फ एक अक्षर को अपरकेस, अन्य लोअरकेस के रूप में भिन्न होते थे। 'एबीसीडी' बनाम 'एबीसीडी' की तरह। डिफ़ॉल्ट संयोजन के साथ यह एक अद्वितीय इंडेक्स उल्लंघन का कारण बन जाएगा (मुझे प्राथमिक कुंजी के लिए भी लगता है)। हमने इसे utf8_bin में बदल दिया और फिर यह हमारे लिए काम किया। – tvirtualw