![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 62 Pomógł: 0 Dołączył: 18.06.2005 Skąd: inąd Ostrzeżenie: (0%) ![]() ![]() |
Witam postanowiłem zaktualizować swój serwer www (lokalny) do wersji phpmyadmin-a 2.11.4 i mysql-a do 5.0.45
Niestety pojawiły się problemy z bazą danych: 1) dotyczące kodowania (udało się rozwiązać) 2) dotyczące typu 'integer'. Mam pewien system (który działał prawidłowo na starszej bazach mysql 3..,4..) teraz pojawia się problem przy 'insercie' danych. Mam w tablicy pole 'value' typu int o długości 11 null domyślnie 0, gdy wprowadzam wartość w formularzu wszytko działa ok, natomiast gdy pozostawiam pole puste pojawia się błąd bazy danych Incorrect integer value, Bardzo zależy mi na tym aby pole to mogło być puste, jedyne co udało mi się wymyślić i działa to zmienić typ pola na "var" ale to nie jest rozwiązuje problemu. -------------------- '
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 595 Pomógł: 282 Dołączył: 24.09.2007 Skąd: Reda, Pomorskie. Ostrzeżenie: (0%) ![]() ![]() |
błąd się pojawia prawdopodobnie dlatego, że próbujesz przypisać do tego pola pusty łańcuch znakowy (to co dostajesz z formularza). powinieneś podstawiać stałą NULL (przy UPDATE) lub pomijać to pole przy INSERT, np.
czyli musisz sprawdzać, co przyszło z formularza i dla pustego pola odpowiednio modyfikować zapytanie... -------------------- - Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... - |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 62 Pomógł: 0 Dołączył: 18.06.2005 Skąd: inąd Ostrzeżenie: (0%) ![]() ![]() |
podejrzewam że to spokojnie pomoże (jeszcze nie sprawdzałem) jednak wolałbym rozwiązać problem w nieco inny sposób ... tzn nie chciałbym modyfikować moich skryptów (system jest dosyć duży, wiele formularzy wiele operacji na bazie) zależałoby mi aby zmodyfikować tak bazę danych aby nie trzeba było ingerować w kod ... o ile to możliwe
-------------------- '
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 595 Pomógł: 282 Dołączył: 24.09.2007 Skąd: Reda, Pomorskie. Ostrzeżenie: (0%) ![]() ![]() |
tak się nie da - albo rybki albo akwarium - z jednej strony piszesz, że chcesz bazę (pole) zostawić bez zmian (czyli typ INTEGRER NULL) i np. zmiana na VARCHAR nie wchodzi w grę. z drugiej strony piszesz, że ze zmianą kodu w PHP jest za dużo zachodu. więc chciałbyś jakoś tajemniczo i magicznie, żeby pusty string sam zamieniał się w NULL albo żeby typ CHAR pasował do pola INT. Jeżeli nie chcesz niczego zmieniać, poszukaj hostingu z jakąś bardzo starą wersją MySQL ...
-------------------- - Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... - |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 162 Pomógł: 26 Dołączył: 19.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
Czy w tym przypadku nie pomógłby trigger zamieniający pusty string na nulla?
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 595 Pomógł: 282 Dołączył: 24.09.2007 Skąd: Reda, Pomorskie. Ostrzeżenie: (0%) ![]() ![]() |
pomyślełem o tym samym i sprawdziłem wczoraj - niestety - typy pół są porównywane jeszcze zamim odpala się trigger before - wywalany jest błąd a trigger się nawet nie odpala... zupełnie inna kwestia, to niekonsekwencja zespołu MySQL - skoro już jest kowersja 'w locie' ze string na int to generowanie błędu (zamiast ostrzezenia) dla pustego stringu jest niezrozumiale...
-------------------- - Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... - |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 07:39 |