Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Domyślna wartość dla kolumny w przypadku "incorrect value"
Forum PHP.pl > Forum > Przedszkole
TheVVaS
Cześć,

Podczas wkładania danych do bazy natrafiłem na pewien problemik.
W wersji 5.5 MySQL'a jak wkładam rekord z złą wartością albo nawet bez niej to MySQL wrzucał domyślną wartość dla tej kolumny, czyli "0".
Tak samo w przypadku kolumn z typem "date", wrzucał domyślnie "0000-00-00".

  1. CREATE TABLE `users` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `group_id` int(11) NOT NULL,
  4. `login` varchar(100) NOT NULL,
  5. `password` varchar(100) NOT NULL,
  6. `createdAt` datetime NOT NULL,
  7. `updatedAt` datetime NOT NULL,
  8. `deletedAt` datetime NOT NULL,
  9. PRIMARY KEY (`id`),
  10. KEY `group_id` (`group_id`),
  11. KEY `deletedAt` (`deletedAt`)
  12. )


Jeśli robiłem następujące zapytanie:

  1. INSERT INTO `users` (`login`, `password`) VALUES ('Super_nick', 'haslo')


To tworzył nowy rekord z uzupełnionymi tymi dwoma kolumnami. W przypadku kolumn z typem "datetime" dawał "0000-00-00 00:00:00", tymi z typem "int" dawał "0". Było fajnie, aż do czasu jak przerzuciłem się na MySQL 5.7.
Teraz te same zapytanie z włożeniem nowych danych do tej samej tabeli zaczęło zwracać błąd "incorrect value" i nie tworzy nowych rekordów, a chciałbym by kolumna z "niepoprawną" wartością zmieniała się na domyślną wartość dla tego typu kolumny jak miało to miejsce w wersji 5.5.
Pytałem googla, niestety jedyne co udało mi się wykopać to "strict-mode" i efektu niestety za bardzo nie udało mi się żadnego osiągnąć.
W przypadku "strict-mode" jedyne co zmieniłem to możliwość wpisania "0000-00-00 00:00:00" do kolumn z typem "datetime", a to jeszcze nie to co chciałem.


TL;DR
Kolumny z wartościami pustymi oraz niepoprawnymi mają zmieniać wartość na domyślną(minimalną?) dla danego typu.

Pozdrawiam.

Edit1:
Myślałem też na dokładaniu do każdego pola ręcznie "DEFAULT", ale nie będzie miało to efektu w przypadku złych wartości.

Edit2:
Udało mi się! biggrin.gif
Ustawiłem
  1. sql-mode=""

I jest jak chciałem. Piszę, może komuś się to przyda.
viking
Tylko wiesz że bazujesz całkowicie na błędach? W tle to rzuca warningi i działa tylko dlatego że mysql jest taką tandetą. Tak pisany kod to nieporozumienie.
Pyton_000
No to jeszcze wyłącz wszystkie błędy w PHP i będzie cacy.
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.