mysql: баг или кривые руки?
От: pva  
Дата: 01.09.21 18:10
Оценка:
Привет,

столкнулся с загадочным поведением mysql 5.7.33 на Windows 10 x64.
При создании таблицы

CREATE TABLE `report_rules` (
`id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
`service_id` INT(10) UNSIGNED NOT NULL,
`from` TIMESTAMP(3) NOT NULL,
`to` TIMESTAMP(3) NOT NULL,
`state` ENUM ('new','progress','done') NOT NULL,
PRIMARY KEY (`id`) USING BTREE,
INDEX `report_rules_service_id_foreign` (`service_id`) USING BTREE,
CONSTRAINT `report_rules_service_id_foreign` FOREIGN KEY (`service_id`) REFERENCES `cv`.`services` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE
)

Поле from создается с DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)
и никакие попытки изменить это не проходят.

Я уже и пересоздавал БД и пытался через SQL поменять. И пошагово избавиться от этой дряни, но оно все равно стабильно создает эту таблицу с таким вот эффектом.
Причем на AWS все создается нормально, без побочных эффектов.
newbie
Re: mysql: баг или кривые руки?
От: rosencrantz  
Дата: 01.09.21 19:12
Оценка: 86 (2)
Здравствуйте, pva, Вы писали:

pva>Поле from создается с DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)

pva>и никакие попытки изменить это не проходят.

Фича: https://dev.mysql.com/doc/refman/5.7/en/timestamp-initialization.html

TIMESTAMP and DATETIME columns have no automatic properties unless they are specified explicitly, with this exception: If the explicit_defaults_for_timestamp system variable is disabled, the first TIMESTAMP column has both DEFAULT CURRENT_TIMESTAMP and ON UPDATE CURRENT_TIMESTAMP if neither is specified explicitly. To suppress automatic properties for the first TIMESTAMP column, use one of these strategies...

Re[2]: mysql: баг или кривые руки?
От: pva  
Дата: 02.09.21 13:41
Оценка: +1
Здравствуйте, rosencrantz, Вы писали:

R>Фича: https://dev.mysql.com/doc/refman/5.7/en/timestamp-initialization.html

Хочется передать разработчикам этой "фичи" привет от Лаврова.
newbie
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.