[MySQL]Specified key too long?

Status
Niet open voor verdere reacties.

karimbizid

Gebruiker
Lid geworden
19 dec 2006
Berichten
557
Hallo allemaal,

Ik heb met behulp van de "wizard" van PHP My Admin de volgende sql code gemaakt:
Code:
CREATE TABLE `leden` (

`user` VARCHAR( 50 ) NOT NULL ,
`pass` VARCHAR( 50 ) NOT NULL ,
`mail` VARCHAR( 250 ) NOT NULL ,
`avatar` VARCHAR( 250 ) NOT NULL ,
`realname` VARCHAR( 250 ) NOT NULL ,
`age` INT( 3 ) NOT NULL ,
`musicfunction` VARCHAR( 250 ) NOT NULL ,
`instrument` VARCHAR( 250 ) NOT NULL ,
`band` VARCHAR( 3 ) NOT NULL ,
`bandprofile` VARCHAR( 250 ) NOT NULL ,
`about` VARCHAR( 250 ) NOT NULL ,
`url` VARCHAR( 250 ) NOT NULL ,
`msurl` VARCHAR( 250 ) NOT NULL ,
`hyvurl` VARCHAR( 250 ) NOT NULL ,
`msn` VARCHAR( 250 ) NOT NULL ,
`skype` VARCHAR( 250 ) NOT NULL ,
`icq` VARCHAR( 250 ) NOT NULL ,
`memsince` VARCHAR( 6 ) NOT NULL ,
UNIQUE (
`user` ,
`mail` ,
`msn` ,
`skype` ,
`icq` 
)
) TYPE = MYISAM

Alleen zegt hij:
Code:
MySQL retourneerde:  

#1071 - Specified key was too long; max key length is 1000 bytes

Wat zit er fout?
Alvast bedankt:thumb: ,
Karim
 
Hallo Karim,

wat er fout zit staat in de foutmelding ;)
Kijk eens naar de kolommen waaruit je unieke sleutel is samengesteld en de grootte van je sleutel als je de grootte van de kolommen optelt.
Of je sleutel anders samenstellen, of de kolomgroottes aanpassen, of (en da's de beste oplossing) , een aparte ID kolom toevoegen en deze definieren als primaire sleutel.

Groet,

Tardis
 
Duidelijker kan ik het niet uitleggen.
Wat dacht je van een cursus, een goed boek of rondsnuffelen in PHP forums ;)

Groet en succes,

Tardis
 
Ik denk dat hier sprake is van een denkfout. Volgens mij wil jij ervoor zorgen dat ieder mail, msn, skype, icq adres maar 1 keer gebruikt wordt. Daarom leg je daarover de Primary Key. Wat MySQL daar echter mee bedoelt is dat de combinatie van de gebruikersnaam en die 4 uniek moet zijn. Dit betekent dus dat bijvoorbeeld pietjepuk met mail pietjepuk@helpmij.nl, msn pietjepuk@helpmij.nl etc in de database maar 1 keer voor mag komen.
Maar....... toegestaan is ook pietjepuk met pietjepuk@helpmij.nl als mail en pietjepuk@hotmail.com etc ... en dat is denk ik niet wat je wilt.

Wat je in dit geval dus wilt is dat waarschijnlijk de username echt uniek is. Dus zou je daar de primary key op moeten zetten.

Vaak wordt voor het gemak ook wel een userid gebruikt, daar je deze makkelijker kan gebruiken in allerlei andere situaties. En je kan deze automatisch op laten lopen (increment), waardoor deze dus altijd uniek is, en je daar geen rekening hoeft te houden in je verdere code. Maar dan moet je op een andere manier het uniek zijn van de username controleren.

Als je overigens iets probeert toe te voegen met een al bestaande waarde in de key, krijg je een keiharde mysql-error.

Succes.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan