Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Typ pola w tabeli bazy danych MySQL
Forum PHP.pl > Forum > Bazy danych > MySQL
Speedy
Hej.

Napotkałem dziwny problem.

Mianowicie: utworzyłem sobie tabelę bazie danych i jednym z jej pól jest pole o nazwie "nip". To pole ma 10 znaków, a jego typ, to INT. Będę w nim trzymał NIP-y różnych osób. Po utworzeniu jednego rekordu we wspomnianej tabeli, zamiast podanego przeze mnie NIP-u wyświetlała się liczba 2147483647. Przy próbie edycji tej danej nawet przez phpMyAdmina jej wartość nie ulegała zmianie. Po prostu nie dało się jej zmienić. Zmieniłem typ tego pola na VARCHAR i mam spokój, bo wszystko działa. Ciekawi mnie jedynie dlaczego taka sytuacja w ogóle miała miejsce i dlaczego, to pole nie mogło normalnie funkcjonować jako typ INT.

Moje parametry: Windows XP, Apache 2.2.4., MySQL 5.0.37., PHP 5.2.3.

Może ktoś wie lub domyśla się, dlaczego tak się działo...
strife
2147483647 to największa wartość jaką może przyjąć INT, http://dev.mysql.com/tech-resources/articl...-datatypes.html. Swoją drogą co za różnica czy INT czy VARCHAR, przecież NIP jest raczej stały i żadnych operacji matematycznych na nim nie będziesz przeprowadzał. Czemu coś takiego Ci się wyświetliło? - Nie wiem, a raczej nie rozumiem czemu ten rekord nie chcę Ci się zmienić na inny w phpmyadmin, ale może jakaś myśl Ci się nasunie po tym co napisałem wyżej smile.gif

Pozdrawiam.
osiris
Lepiej uzyc BIGINT zajmuje 8bajtow, oszczedzasz 3 bajty na kazdym rekordzie (zakladajac ze dlugosc nipu to 10 cyfr = 10bajtów + 1bajt dlugosci pola varchar)
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-2025 Invision Power Services, Inc.