Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Error przy tworzeniu tabeli ???
Citral
post
Post #1





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 3.02.2004

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
scanner
post
Post #2





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




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ę.


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
Citral
post
Post #3





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 3.02.2004

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
scanner
post
Post #4





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




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.


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
Citral
post
Post #5





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 3.02.2004

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 06:09