Citral
10.05.2004, 12:32:01
Witam
Mam taki problem, chciałem stworzyć tabelę z dwiema kolumnami loginem i hasłem bez żadnej numeracji typu user_id autoincrementowanej. No więc za pomocą PHPMyAdmina spróbowałem utworzyć tabelę z polami login i hasło gdzie login będzie UNIQUE, jednak wywala mi błędy i nie wiem co robię źle.. tak więc wychodzi coś takiego:
[sql:1:66ef2e0ab8]
CREATE TABLE `nauczyciel` (
`login` TEXT NOT NULL ,
`haslo` TEXT NOT NULL ,
UNIQUE (`login` )
)
[/sql:1:66ef2e0ab8]
MySQL zwrócił komunikat:
#1170 - BLOB column 'login' used in key specification without a key length
Pomyślałem, że chodzi o to, że pole typu UNIQUE powinno mieć określoną długość więc zrobiłem tak:
[sql:1:66ef2e0ab8]
CREATE TABLE `nauczyciel` (
`login` TEXT( 15 ) NOT NULL ,
`haslo` TEXT NOT NULL ,
UNIQUE (`login` )
)
[/sql:1:66ef2e0ab8]
MySQL zwrócił komunikat:
#1064 - Something is wrong in your syntax obok '(15) NOT NULL, `haslo` TEXT NOT NULL, UNIQUE (`login`))' w linii 1
No i nie wiem dlaczego nie mogę utworzyć takiej prostej tabeli. Jeśli zamiast UNIQUE dam PRIMARY to jest to samo... a jeśli zrezygnuję z tego aby pole login było unikalne to oczywiście tabela tworzy się bez problemu. Dlaczego login nie może być polem typu UNIQUE?
scanner
10.05.2004, 12:41:51
jeśłi definiujesz długość to:[sql:1:18bb7c28f0]CREATE TABLE `nauczyciel` (
`login` CHAR( 15 ) NOT NULL ,
`haslo` CHAR( 32 ) NOT NULL ,
UNIQUE (`login` )
)[/sql:1:18bb7c28f0]hasło kodowane md5() to dokładnie 32 znaki. Pole typu text dla takich danych to jazda z armata na muchę.
Citral
10.05.2004, 12:49:40
nie wpisywałem ręcznie definicji długości pola, tylko robiłem to za pomocą PHPMyAdmina dlatego byłem pewien, że zapytanie jest skonstruowane poprawnie, przetestuję to w domu, czyli co chodziło o to, że mam pole typu text a nie char przy definiowaniu długości? Bo Ty Scaner to zauwazyłem nie zawsze odpowiadasz na pytanie tylko piszesz o czymś innym... nie pytałem się o definicję długości... Moje pytanie brzmiało dlaczego wyskakuje mi błąd przy zapytaniu tym pierwszym gdzie nie ma definicji długości? Pole login typu TEXT, pole hasło typu TEXT i chcę żeby login był UNIQUE a wyskakuje błąd... z jakiego powodu? Wyskakiwanie z armatą na muchę jest jak najbardziej w moim stylu, lubię być pewny poza tym skąd wiesz, że będę kodował md5 ? Ponawiam pytanie: dlaczego wyskakuje error? Czy ktoś wie? Pole typu TEXTowego przecież może być UNIQUE niezależnie od długośći... o co tu biega?
scanner
10.05.2004, 13:01:14
Moje odpowiedzi żadko kiedy mają na celu bezmyślne podanie rozwiązania. Mają zmuszać do myślenia.
1 problem: tak, nie jest podana długość pola.
2 problem: nie można określić długości pola typu TEXT, BLOB i podobnych.
Citral
10.05.2004, 13:04:09
Wiesz ja lubię myśleć ale nie bezmyślnie
Dzięki bardzo, w domu sprawdzę i iak masz rację (a pewnie masz) one point4u
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.