Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / MySQL Новый топик    Ответить
 поле DATETIME и значения NULL  [new]
Arhat109
Member

Откуда: из СССР
Сообщений: 3306
Всем привет, давно не вдавался в новости по MySql и MariaDb. Собственно сейчас вопрос по MariaDb, но возможно оно одинаково:

Есть табличка с полем:
..
`dtEnd` DATETIME DEFAULT NULL COMMENT 'уволен',
..

NULL вставляется как положено, но при выборках вместо значения NULL получаю "0000-00-00 00:00:00". Сначала обнаружил это как результат из Yii2, небольшая трассировка его методов привела к выводу что в таком виде он получает данные уже из PDO драйвера..

.. почитал, в некоторых местах советуют проверять на эту строку и руками заменять на null .. не бред ли это? Поле специально объявлено как "NULL содержащее" .. или я что-то упустил и сильно?

Нужен "оперативный ответ" на "что делать?" :)
7 дек 18, 10:49    [21756746]     Ответить | Цитировать Сообщить модератору
 Re: поле DATETIME и значения NULL  [new]
Arhat109
Member

Откуда: из СССР
Сообщений: 3306
Arhat109,

никто не знает как быть?
7 дек 18, 11:08    [21756761]     Ответить | Цитировать Сообщить модератору
 Re: поле DATETIME и значения NULL  [new]
miksoft
Member

Откуда:
Сообщений: 37149
А в базе-то что реально сохранено?
7 дек 18, 11:24    [21756774]     Ответить | Цитировать Сообщить модератору
 Re: поле DATETIME и значения NULL  [new]
Arhat109
Member

Откуда: из СССР
Сообщений: 3306
miksoft,

NULL конечно же..
7 дек 18, 11:26    [21756779]     Ответить | Цитировать Сообщить модератору
 Re: поле DATETIME и значения NULL  [new]
Arhat109
Member

Откуда: из СССР
Сообщений: 3306
Arhat109,

Пока (надо срочно) воткнул проверку на строку .. но это же явно БРЕД!!! что я делаю не так ..
7 дек 18, 11:28    [21756781]     Ответить | Цитировать Сообщить модератору
 Re: поле DATETIME и значения NULL  [new]
Arhat109
Member

Откуда: из СССР
Сообщений: 3306
Вот так показывает phpstorm в своем окошке.

.. Упс. А выборка из mySql> показывает эту строку .. щаз проверю вставку из консоли..

К сообщению приложен файл. Размер - 46Kb
7 дек 18, 11:34    [21756787]     Ответить | Цитировать Сообщить модератору
 Re: поле DATETIME и значения NULL  [new]
miksoft
Member

Откуда:
Сообщений: 37149
Беглый поиск показывает наличие параметра nullConversion у Yii.
7 дек 18, 11:44    [21756798]     Ответить | Цитировать Сообщить модератору
 Re: поле DATETIME и значения NULL  [new]
Arhat109
Member

Откуда: из СССР
Сообщений: 3306
Arhat109,

Так, похоже что вставка работала некорректно. Пошел проверять.

Такой запрос из консоли: UPDATE `svt_firm_person` SET `dtEnd`= NULL WHERE fpId=14; прописывает в поле NULL, который через консольный SELECT отдается нормально как NULL, Yii2 его тоже отдает как NULL. Проверил.

Пошел смотреть запись..
7 дек 18, 11:44    [21756799]     Ответить | Цитировать Сообщить модератору
 Re: поле DATETIME и значения NULL  [new]
Arhat109
Member

Откуда: из СССР
Сообщений: 3306
Arhat109,

Упс! Поле при сохранении записи не отдается на сервер и соответственно не участвует (не должно) в операторе INSERT INTO .. то есть в БД должно писаться дефолтное значение, а оно .. NULL.

Нашел косяк, тему можно закрывать. Итого:

Yii2 при записи с пустым значением поля, отдает в PDO .. пустую строку, которая для полей типа DATETIME воспринимается как неверное значение и соответственно приводится к "дефолтному" .. не, не тому которое указано для поля (NULL в данном случае) а некоторому "своему" для типа в целом - этой строке, она и прописывалась в БД. А "умный" ПХПшторм переводил это значение в то, что на картинке, вводя меня в заблюждение (ВОТ НАФИГА ТАК ДЕЛАТЬ?!?). Итого, "убил 3 часа на поиск проблемы и решения"..

Исправил запись, что если на сервер пришло пустое значение - воткнуть в него принудительно запись NULL-я. .. блин, это сколько же теперь по всему проекту шерстить .. :(
7 дек 18, 12:04    [21756833]     Ответить | Цитировать Сообщить модератору
 Re: поле DATETIME и значения NULL  [new]
miksoft
Member

Откуда:
Сообщений: 37149
miksoft
Беглый поиск показывает наличие параметра nullConversion у Yii.
это не то, что нужно?
7 дек 18, 12:07    [21756838]     Ответить | Цитировать Сообщить модератору
 Re: поле DATETIME и значения NULL  [new]
Melkij
Member

Откуда: Санкт-Петербург
Сообщений: 620
Arhat109
пустую строку, которая для полей типа DATETIME воспринимается как неверное значение и соответственно приводится к "дефолтному"

Включите sql_mode в strict mode: https://dev.mysql.com/doc/refman/8.0/en/sql-mode.html#sql-mode-strict
У mysql много странного поведения, в строгом режиме жить заметно попроще.
7 дек 18, 12:14    [21756852]     Ответить | Цитировать Сообщить модератору
 Re: поле DATETIME и значения NULL  [new]
Arhat109
Member

Откуда: из СССР
Сообщений: 3306
miksoft,

Не знаю, не смотрел ещё .. вышел покурить, а тут свет вырубили .. смотрю "что отвалилось" у Линукса. Не до этого вопроса стало "внезапно".. :(
7 дек 18, 12:21    [21756870]     Ответить | Цитировать Сообщить модератору
 Re: поле DATETIME и значения NULL  [new]
Arhat109
Member

Откуда: из СССР
Сообщений: 3306
miksoft,

Да, валидатор default со значение null - решает проблему. Спасибо.
7 дек 18, 12:50    [21756920]     Ответить | Цитировать Сообщить модератору
Все форумы / MySQL Ответить