Неверное значение по умолчанию для поля метки времени create_date - PullRequest
156 голосов
/ 08 февраля 2012

У меня есть следующий оператор создания SQL

mysql> CREATE  TABLE IF NOT EXISTS `erp`.`je_menus` (
    ->   `id` INT(11) NOT NULL AUTO_INCREMENT ,
    ->   `name` VARCHAR(100) NOT NULL ,
    ->   `description` VARCHAR(255) NOT NULL ,
    ->   `live_start_date` DATETIME NULL DEFAULT NULL ,
    ->   `live_end_date` DATETIME NULL DEFAULT NULL , 
    ->   `notes` VARCHAR(255) NULL ,
    ->   `create_date` TIMESTAMP NOT NULL DEFAULT  '0000-00-00 00:00:00',
    ->   `created_by` INT(11) NOT NULL ,
    ->   `update_date` TIMESTAMP NOT NULL DEFAULT  CURRENT_TIMESTAMP  ,
    ->   `updated_by` INT(11) NOT NULL , 
    ->   `status` VARCHAR(45) NOT NULL ,
    ->   PRIMARY KEY (`id`) ) 
    -> ENGINE = InnoDB;

дает следующую ошибку

ERROR 1067 (42000): Invalid default value for 'create_date'

В чем здесь ошибка?

Ответы [ 13 ]

1 голос
/ 27 июля 2017

Возможно, вы захотите проверить настройку часового пояса в экземпляре MySql:

mysql> show variables like 'time_zone';
+---------------+--------+
| Variable_name | Value  |
+---------------+--------+
| time_zone     | SYSTEM |
+---------------+--------+

В моем случае я понял, что для базовой системы установлен часовой пояс BST, а не UTC, и поэтому при созданиитаблица по умолчанию «1970-01-01 00:00:01» была принудительно возвращена на 1 час, что привело к недопустимому значению временной метки.

Для меня я фактически хотел, чтобы часовой пояс машины был установлен в UTC, иэто разобрало меня.Когда я работал с Centos / 7, я просто сделал

# timedatectl set-timezone UTC

и перезапустил все.

0 голосов
/ 17 июня 2018

Значения по умолчанию должны начинаться с 1000 года.

Например,

ALTER TABLE mytable last_active DATETIME DEFAULT '1000-01-01 00:00:00'

Надеюсь, это кому-нибудь поможет.

0 голосов
/ 06 апреля 2018

Вы можете просто изменить это:

`create_date` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00',

Примерно так:

`create_date` TIMESTAMP NOT NULL DEFAULT '2018-04-01 12:00:00',
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...