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".
CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `group_id` int(11) NOT NULL, `login` varchar(100) NOT NULL, `password` varchar(100) NOT NULL, `createdAt` datetime NOT NULL, `updatedAt` datetime NOT NULL, `deletedAt` datetime NOT NULL, PRIMARY KEY (`id`), KEY `group_id` (`group_id`), KEY `deletedAt` (`deletedAt`) )
Jeśli robiłem następujące zapytanie:
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ę!

Ustawiłem
sql-mode=""
I jest jak chciałem. Piszę, może komuś się to przyda.