metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2014-12-01 05:41 pm

mysql

Правильно ли я понимаю, что `created_on` datetime NOT NULL в создании таблицы mysql воспринимает чисто как рекомендацию, но вставлять null в такие поля разрешает?
Или это у меня просто руби и прочая кложурь падают от значения "00-00-0000 00:00:00" которое он туда по умолчанию впихивает при инсерте?

[identity profile] juan-gandhi.livejournal.com 2014-12-01 04:36 pm (UTC)(link)
Пытаюсь переварить сообщение о том, что "руби и кложурь падают от значения "00-00-0000 00:00:00""

[identity profile] metaclass.livejournal.com 2014-12-01 04:53 pm (UTC)(link)
что-то вроде такого:
java.sql.SQLException: Cannot convert value '0000-00-00 00:00:00' from column 6 to TIMESTAMP.
at com.mysql.jdbc.SQLError.createSQLException (SQLError.java:1055)

Ожидаемо, т.к. нулевых дней в месяце не бывает :)

а руби загружает это значение как nil и при попытке его показать на странице валится :)

[identity profile] sergiej.livejournal.com 2014-12-01 05:14 pm (UTC)(link)
кстати это пахнет багом Mysql. Раз они применяют такой дефолт, то должны его валидно и преобразовывать

[identity profile] metaclass.livejournal.com 2014-12-01 05:32 pm (UTC)(link)
Это драйвер жабий, а не mysql, кажется.

[identity profile] sergiej.livejournal.com 2014-12-01 05:45 pm (UTC)(link)
да пожалуй жаба

[identity profile] denisioru.livejournal.com 2014-12-01 06:53 pm (UTC)(link)
Прекрасный, яркий баг, могли бы и -1 использовать как отсутствие целочисленного значения. А что? В мире никто не использует -1, давайте его будем считать отсутствием значения.

Да, я в курсе про boolean в паскале.

[identity profile] sergiej.livejournal.com 2014-12-01 06:57 pm (UTC)(link)
ну судя по описанию это не отсутствие, а именно нулевая дата

[identity profile] metaclass.livejournal.com 2014-12-01 07:27 pm (UTC)(link)
Не, такой даты не может быть по определению.
Но оно же пытается ее создать :)

[identity profile] sergiej.livejournal.com 2014-12-01 07:29 pm (UTC)(link)
Ну дефолтную же можно другую попробовать проставить. Я думаю тут оно не на 000000 падает
хотя чего гадать на пальцах, можно инвестигейтить

[identity profile] volodymir-k.livejournal.com 2014-12-01 06:28 pm (UTC)(link)
ждбц драйвер для майскл должна писать, и пишет, команда майскл (теоретически она может и не быть в штате оракла)

что у них могут быть кривые руки, охотно верю

но вот как раз драйвер https://dev.mysql.com/downloads/connector/j/ гпл-ный, можете собственноручно фиксать баги

[identity profile] sergiej.livejournal.com 2014-12-01 06:59 pm (UTC)(link)
так к этому же наверняка привыкли и пользуются в мегатоннах кода. "Профиксай" такое и сотня систем ляжет

[identity profile] juan-gandhi.livejournal.com 2014-12-01 05:36 pm (UTC)(link)
Философски глядя, это херня.

Внешний мир может поставлять до хрена всякого мусора; надо не рыдать над несовершенством внешнего мира, а определять машину (т.е. алгебру) соответствующим образом.

[identity profile] metaclass.livejournal.com 2014-12-01 06:29 pm (UTC)(link)
Не, тут все от входа сломано, если основа основ, т.е. база данных, позволяет себе мало того, что создавать значения недопустимые типом (вставлять NULL в не-NULL поле), так еще и заменяет их на значения, в принципе недопустимые типом, который внутри Nullable[] живет.
Ну, ладно, для меня это система внешняя, я на границе от нее костыль поставлю, но все равно печально :)

[identity profile] sergiej.livejournal.com 2014-12-01 07:30 pm (UTC)(link)
оракл тоже умеет вставлять нулл не в нулл

[identity profile] juan-gandhi.livejournal.com 2014-12-01 09:05 pm (UTC)(link)
Это другое дело, печалиться от несовершенства мира. Мейер как раз и сказал, что куда ни кинь - везде монада (а чистоты нетути).