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] sergiej.livejournal.com 2014-12-01 02:52 pm (UTC)(link)

Null и ноль часов ноль минут в день начала нашей эры это две большие разницы :)

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

[identity profile] falcrum.livejournal.com 2014-12-01 06:27 pm (UTC)(link)
Вот, блин, теперь из-за тебя сижу и пытаюсь вспомнить, в какой БД null в date давал 30 декабря 1899 года...

[identity profile] dmitry-vk.livejournal.com 2014-12-02 05:15 am (UTC)(link)
В mysql есть какой-то strict mode, в котором, кажется, такого не происходит.

[identity profile] dj20a.livejournal.com 2014-12-02 06:54 am (UTC)(link)
ты не не правильно понимаешь. ты шизофреник.

[identity profile] kamazee.livejournal.com 2014-12-06 11:07 pm (UTC)(link)
Что-то мне подсказывает, что драйвер передает какое-то значение, которое кастуется в 0000-00-00 00:00:00 (которое суть число ноль), но не null. По-моему, MySQL, несмотря на толпы тараканов в разных местах, ведет себя при записи datetime достаточно объяснимо (см. в особенности первую вставку):


$ mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 46673
Server version: 5.5.31-0+wheezy1 (Debian)

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use test;
Database changed
mysql> create table metaclass (test_datetime datetime not null);
Query OK, 0 rows affected (0.34 sec)

mysql> insert into metaclass values (null);
ERROR 1048 (23000): Column 'test_datetime' cannot be null
mysql> insert into metaclass values ('');
Query OK, 1 row affected, 1 warning (0.09 sec)

mysql> insert into metaclass values (0);
Query OK, 1 row affected (0.05 sec)

mysql> select * from metaclass;
+---------------------+
| test_datetime |
+---------------------+
| 0000-00-00 00:00:00 |
| 0000-00-00 00:00:00 |
+---------------------+
2 rows in set (0.00 sec)
Edited 2014-12-06 23:09 (UTC)

[identity profile] rashid80.livejournal.com 2014-12-15 02:14 pm (UTC)(link)
Даже в долбанной 1с и то нет пустой даты.
Если в проперти объекта (типа дата) не указано значение, то в БД (MS SQL Server, Oracle, Postgres) запишется 0001.01.01 00:00:00 (yyyy.mm.dd hh:mm:ss)