URL'leri benzersiz anahtarlar olarak depolayan bir MySQL tablom var. Anahtarlarımda çakışmalara başlıyorum çünkü tuşların kendileri sadece ilk 64 bayt (ya da tercih ederseniz karakterleri, bir latin-1'i herhangi bir url). Yani bir URL 64 karakterden fazlaysa ve zaten benzer bir URL'ye sahibim, bir hata atar. ÖrneğinMyISAM benzersiz anahtarları 64 baytta kesiliyor ve çarpışmalara neden oluyor
:
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 bayt anahtar uzunluklara sahip gerekiyordu:
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'
bu hata Atar?
DÜZENLEME:
ALTER TABLE `mydb`.`links`
DROP INDEX `url`, ADD UNIQUE INDEX `url` (`url`(256) ASC) ;
: Böyle 256'dan birini ayarlamak çalıştı
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
: CREATE TABLE STATUS listelenen bir önek uzunluğu Bu gibi görünüyor diyoruz Orada görünmüyor
ve aşağıdaki hata var: Ben Alte ran çünkü geri dönüş sadece olduğunu düşünüyorum
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
MySQL Workbench üzerinden R TABLO. Yalnızca (endeksinin uzunluğunu belirterek) bir önek kullanan bir dizin oluşturduğunuzda
Bağlantılar tablonuzda 'show create table' yapın. Endeks muhtemelen 64. –