![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 8.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Mam problem z moja baza danych. Nie moge ustawić typu kolumny char z 40 znakami. Typ jest automatycznie zmieniany na varchar(40) . Ogólnie char jest akceptowany tylko do 5 znaków. Nie wiecie czy to wina jakiegoś configu i jak to moge zmienić? Mój serwer MySQL 3.23.58-max-debug Pozdrawiam |
|
|
![]()
Post
#2
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 923 Pomógł: 9 Dołączył: 25.10.2004 Skąd: Rzeszów - studia / Warszawa - praca Ostrzeżenie: (0%) ![]() ![]() |
Az bardzo Ci na tym zalezy. Typ varchar automatycznie sie dostosowuje ogranicznik jest chyba na 32 pozniej wszystko jest traktowane na varchar czyli zmienny typ dlugosci. A czy da sie w configu zmienic to musisz w dokumentacji poszukac ale podejrzewam ze nie.
-------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 764 Pomógł: 3 Dołączył: 30.04.2003 Ostrzeżenie: (0%) ![]() ![]() |
Kiedyś pytałem tutaj na forum dlaczego tak się dzieje, ale niestety nikt nie był wstanie udzielić odpowiedzi.
Z tego co pamiętam taka sytuacja ma miejsce gdy np. w zapytaniu tworzacym tabele masz w jednej tabeli zdefiniony zarowno typ char oraz varchar. Jezeli masz w jednej tabeli tylko char to wowczas nie zmienia typu. Przed chwila jednak sprawdzilem na wersji 5.0.xx i takiej definicji:
mysql nie zmienil i po wczytaniu parametrow tabeli wyszlo:
Na pewno w poprzednich wersjach (ale ktorych nie jestem dokladnie powiedziec) wlasnie mysql w opisany wyzej sposob zmienial typ. Czemu? Niestety nie wiem. Być może to kwestia jakiegos konfigu. Nie wiem. |
|
|
![]()
Post
#4
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 923 Pomógł: 9 Dołączył: 25.10.2004 Skąd: Rzeszów - studia / Warszawa - praca Ostrzeżenie: (0%) ![]() ![]() |
Dziwne mozliwe ze tak bylo we wczesniejszych wersjach. @mhs tnx za wyjasnienie. Jak bys znalazl jakies info na ten temat to wrzuc na forum.
-------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 764 Pomógł: 3 Dołączył: 30.04.2003 Ostrzeżenie: (0%) ![]() ![]() |
Pewnie tak właśnie było we wcześniejszych wersjach (chociaż pewnie byłoby trzeba się dokładnie dowiedzieć
c kiedy zmieniło się tak). Przed chwilą za nim udzieliłem odpowiedzi na posta zrobiłem właśnie taki mały test i lekko się zdziwiłem, że mysql "poprawnie" się zachował, gdyż mając wczesniejsze przygody z tym problemem byłem pewnien, że również w chwili obecnej mysql tak się zachowa. No, ale od wersji 5.x troche rzeczy sie zmienilo ![]() @SongoQ Gdybym znalazl cos to jasne, ze sie tym podziele. Pozdrawiam. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 8.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
heh
utworzyłem tabele tylko z char i poszło potem zmieniłem jedną kolumne na varchar i automatycznie zmieniło wszystko. interesuje mnie to bo nie wiem dlaczego na varchar skrypt mi sie sypie. kiedy ustawie ta kolumne na text już działa normalnie. zapisuje tam zakodowane hasło przez sha1() |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 764 Pomógł: 3 Dołączył: 30.04.2003 Ostrzeżenie: (0%) ![]() ![]() |
utworzyłem tabele tylko z char i poszło potem zmieniłem jedną kolumne na varchar i automatycznie zmieniło wszystko. czyli wskazywałoby na to, że działa tak jak opisałem. interesuje mnie to bo nie wiem dlaczego na varchar skrypt mi sie sypie. kiedy ustawie ta kolumne na text już działa normalnie. zapisuje tam zakodowane hasło przez sha1() hmm, za bardzo nie wiem dlaczego tak się dzieje, ale trochę dziwne to wszystko dziala, z tego co opiszujesz. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 8.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
dla mnie tez to dziwne, bo text a varchar nie powinno robic różnicy, te pola przechowuja takie same typy danych. na char tez skrypt mi działa, więc nie wiem czemu na varchar nie.
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Problem odnosnie char i konwersji na varchar omawiany byl posredniu tu:
http://forum.php.pl/index.php?showtopic=48144&hl=varchar Cytat No niestety nie mogę znaleźć. Ale zrobilem eksperyment:
zalozylem tabele z jednym polem CHAR (20). No i git. Jest char Dla pewnosci dodaje drugie pole CHAR. I jest git. Oba są CHAR. Teraz dodaje kolejne pole, ale juz VARCHAR. No i automaycznie wszystkie pola CHAR zamieniają sie na VARCHAR. Proba ustawienia ich spowrotem na CHAR nic nie daje. Dopier gdy usune tamto VARCHAR, to moge spowrotem to zamienic na CHAR. Nie sądze by byl to bug mojego klienta do mysql edit: znalazlem w manualu http://dev.mysql.com/doc/refman/4.1/en/sil...mn-changes.html CYTAT If any column in a table has a variable length, the entire row becomes variable-length as a result. Therefore, if a table contains any variable-length columns (VARCHAR, TEXT, or BLOB), all CHAR columns longer than three characters are changed to VARCHAR columns -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 04:47 |