Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / поле DATETIME и значения NULL / 13 сообщений из 13, страница 1 из 1
07.12.2018, 10:49
    #39744076
Arhat109
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поле DATETIME и значения NULL
Всем привет, давно не вдавался в новости по MySql и MariaDb. Собственно сейчас вопрос по MariaDb, но возможно оно одинаково:

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

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

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

Нужен "оперативный ответ" на "что делать?" :)
...
Рейтинг: 0 / 0
07.12.2018, 11:08
    #39744088
Arhat109
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поле DATETIME и значения NULL
Arhat109,

никто не знает как быть?
...
Рейтинг: 0 / 0
07.12.2018, 11:24
    #39744097
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поле DATETIME и значения NULL
А в базе-то что реально сохранено?
...
Рейтинг: 0 / 0
07.12.2018, 11:26
    #39744101
Arhat109
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поле DATETIME и значения NULL
miksoft,

NULL конечно же..
...
Рейтинг: 0 / 0
07.12.2018, 11:28
    #39744102
Arhat109
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поле DATETIME и значения NULL
Arhat109,

Пока (надо срочно) воткнул проверку на строку .. но это же явно БРЕД!!! что я делаю не так ..
...
Рейтинг: 0 / 0
07.12.2018, 11:34
    #39744108
Arhat109
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поле DATETIME и значения NULL
Вот так показывает phpstorm в своем окошке.

.. Упс. А выборка из mySql> показывает эту строку .. щаз проверю вставку из консоли..
...
Рейтинг: 0 / 0
07.12.2018, 11:44
    #39744117
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поле DATETIME и значения NULL
Беглый поиск показывает наличие параметра nullConversion у Yii.
...
Рейтинг: 0 / 0
07.12.2018, 11:44
    #39744118
Arhat109
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поле DATETIME и значения NULL
Arhat109,

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

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

Пошел смотреть запись..
...
Рейтинг: 0 / 0
07.12.2018, 12:04
    #39744146
Arhat109
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поле DATETIME и значения NULL
Arhat109,

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

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

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

Исправил запись, что если на сервер пришло пустое значение - воткнуть в него принудительно запись NULL-я. .. блин, это сколько же теперь по всему проекту шерстить .. :(
...
Рейтинг: 0 / 0
07.12.2018, 12:07
    #39744151
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поле DATETIME и значения NULL
miksoftБеглый поиск показывает наличие параметра nullConversion у Yii.это не то, что нужно?
...
Рейтинг: 0 / 0
07.12.2018, 12:14
    #39744163
Melkij
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поле DATETIME и значения NULL
Arhat109пустую строку, которая для полей типа DATETIME воспринимается как неверное значение и соответственно приводится к "дефолтному"
Включите sql_mode в strict mode: https://dev.mysql.com/doc/refman/8.0/en/sql-mode.html#sql-mode-strict
У mysql много странного поведения, в строгом режиме жить заметно попроще.
...
Рейтинг: 0 / 0
07.12.2018, 12:21
    #39744174
Arhat109
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поле DATETIME и значения NULL
miksoft,

Не знаю, не смотрел ещё .. вышел покурить, а тут свет вырубили .. смотрю "что отвалилось" у Линукса. Не до этого вопроса стало "внезапно".. :(
...
Рейтинг: 0 / 0
07.12.2018, 12:50
    #39744209
Arhat109
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поле DATETIME и значения NULL
miksoft,

Да, валидатор default со значение null - решает проблему. Спасибо.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / поле DATETIME и значения NULL / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]