Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL]Domyślna wartość dla kolumny w przypadku "incorrect value"
TheVVaS
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 23.01.2015

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


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ę! (IMG:style_emoticons/default/biggrin.gif)
Ustawiłem
  1. sql-mode=""

I jest jak chciałem. Piszę, może komuś się to przyda.

Ten post edytował TheVVaS 9.09.2017, 21:50:14
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 17.09.2025 - 17:02