Gå til innhold

text column used in key spesification


Anbefalte innlegg

Jeg har denne:

 

CREATE TABLE users (
 username TINYTEXT NOT NULL,
 email TINYTEXT NOT NULL,
 role_id INTEGER UNSIGNED NOT NULL,
 password_hash CHAR(40) NOT NULL,
 last_seen DATETIME DEFAULT NULL,
 last_ip INTEGER UNSIGNED DEFAULT NULL,
 PRIMARY KEY(username),
 INDEX index_validate(username, password_hash)
)
ENGINE = MyISAM;

 

Men får:

BLOB/TEXT column 'username' used in key specification without a key length

 

 

What do I do? burde jeg bruke en user_id INTEGER istedet som primary key?

Lenke til kommentar
Videoannonse
Annonse

altså, hovedspørsmålet er (da det kanskje ikke kom helt klart frem..) hvordan angir jeg key length? (og hvor lang bør/skal/må den være?)

 

får samme feilen når jeg prøver å legge til

UNIQUE index_username(username) også... :(

Endret av Tussi_qwerty
Lenke til kommentar

Siden du åpenbart har noen hull i kunnskapen bør du se nøyere på de forskjellige datatypene. Er password hash alltid 40 tegn? Hvis ikke bør den muligens være av type varchar i steden for char. Tilsvarende bør også brukernavn være char eller varchar, avhengig av hvilke begrensninger du setter på lengden av brukernavn. Og ja, det kan definitivt være fordelaktig å bruke brukerid i steden for brukernavn.

Lenke til kommentar

klart jeg har hul i kunnskapen. ellers hadde jeg jo ikke spurt spørsmålet...

 

bruker user_id nå, men vil fortsatt veldig gjerne få puttet en unique på username slik at det ikke er mulig å ha noen med samme brukernavn. ingen som vet hvordan jeg kan få til det?

 

en password_hash er _alltid_ 40 tegn. bruker sha1() funksjonen til å lagre passord, og resultatet av den er _alltid_ 40 tegn.

 

har brukt tinytext jeg synes det ser renere ut. ser ikke noen forskjeller mellom tinytext og varchar(255) uansett, og derfor tenkte jeg det var et fett.. men er vel sikkert ikke det..

 

uansett så kunne jeg fortsatt godt tenkt meg å vite hvordan jeg kan angi key length på den saken.... noen som vet? :ermm:

Endret av Tussi_qwerty
Lenke til kommentar

...text er CLOBS (Character Large Objects). Disse har noen lagringsmessige fordeler, men har også noen begrensninger, som f eks at det ikke er like greit å indeksere dem, og (hvis jeg ikke tar helt feil) de ikke kan være primærnøkkel eller fremmednøkkel. Mer informasjon om LOBs finner du hos MySQL

Lenke til kommentar

ok. men da er den grei. da bruker jeg varchar istedet på den da. takker for info :)

 

de mysql manualsidene er foreløpig alt for komplekse og innvikla til at jeg klarer å bruke dem ordentlig.. manualen til php er SÅ mye greiere. så for tiden bruker jeg en MySQL in 10 minutes chm fil som oppslagsverk på de enklere tingene :)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...