Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Error przy tworzeniu tabeli ???
Forum PHP.pl > Forum > Bazy danych > MySQL
Citral
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
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
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
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
Wiesz ja lubię myśleć ale nie bezmyślnie smile.gif

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.
Invision Power Board © 2001-2024 Invision Power Services, Inc.