मैं एक MySQL तालिका मिल गया है के कारण है कि भंडार यूआरएल के रूप में अनूठी कुंजियाँ। मैं अपनी चाबियों पर टकराव शुरू कर रहा हूं क्योंकि ऐसा लगता है कि कुंजियां स्वयं केवल पहले 64 बाइट्स (या यदि आप चाहें तो पात्र हैं, यह लैटिन -1 कोलाइट किया गया है) किसी यूआरएल के हैं। तो यदि एक यूआरएल 64 वर्णों से अधिक है और मुझे पहले से ही एक समान यूआरएल मिल गया है तो यह एक त्रुटि फेंकता है।MyISAM अनूठी कुंजियाँ 64 बाइट्स में काटा जा रहा है, टकराव
उदाहरण के लिए:
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry
'http://etonline.com/tv/108475_Charlie_Sheen_The_People_Have_Elec' for key 'url'
Isnt MyISAM 1000-बाइट कुंजी लंबाई है माना जाता:
SELECT l.link_id FROM mydb.links l WHERE
url = 'http://etonline.com/tv/108475_Charlie_Sheen_The_People_Have_Elected_Me_as_Their_Leader/index.html'
इस त्रुटि फेंकता?
संपादित करें:
ALTER TABLE `mydb`.`links`
DROP INDEX `url`, ADD UNIQUE INDEX `url` (`url`(256) ASC) ;
:
CREATE TABLE `links` (
`link_id` int(11) NOT NULL AUTO_INCREMENT,
`url` varchar(500) NOT NULL,
PRIMARY KEY (`link_id`),
UNIQUE KEY `url` (`url`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
मैं 256 इस तरह एक को सेट करने की कोशिश की: वहाँ CREATE TABLE स्थिति पर सूचीबद्ध एक उपसर्ग लंबाई फोन यह इस तरह दिखता है होना करने के लिए प्रतीत नहीं होता
और मैं निम्नलिखित त्रुटि मिली:
ERROR 1062: Duplicate entry '<...64-byte key...>' for key 'url'
SQL Statement:
ALTER TABLE `mydb`.`links`
DROP INDEX `url`, ADD UNIQUE INDEX `url` (`url`(256) ASC)
ERROR: Error when running failback script. Details follow.
ERROR 1050: Table 'links' already exists
मुझे लगता है कि वापस आने सिर्फ इसलिए कि मैं ALTE भाग गया है MySQL वर्कबेंच के माध्यम से आर टेबल।
अपनी लिंक तालिका पर 'शो बनाएं तालिका' करें। सूचकांक शायद 64 की लंबाई के साथ परिभाषित किया गया है। –