2016-03-11 2 views
0

Это не работает:MYSQL ошибка с конкретным значением timestap

INSERT INTO `catalog_product_entity` VALUES 
    (28,4,4,'simple','BCBSO2R',0,0,'2012-03-25 02:52:08','2015-05-19 12:20:53') 

1292 - Неправильное значение даты и времени: '2012-03-25 2:52:08' для столбца 'created_at' в строке 1

Но это работает:

INSERT INTO `catalog_product_entity` VALUES 
    (28,4,4,'simple','BCBSO2R',0,0,'2012-03-25 01:52:08','2015-05-19 12:20:53') 

Я изменил только время от «2 012-03-25 02:52:08 'to' 2012-03-25 01:52:08 '!!

Как возможно, что конкретное значение в таблице столбца created_at TIMESTAMP NULL DEFAULT NULL COMMENT «Время создания»; не допускается?

EDIT: (полный синтаксис создания)

DROP TABLE IF EXISTS `catalog_product_entity`; 

CREATE TABLE `catalog_product_entity` (
    `entity_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Entity ID', 
    `entity_type_id` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT 'Entity Type ID', 
    `attribute_set_id` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT 'Attribute Set ID', 
    `type_id` varchar(32) NOT NULL DEFAULT 'simple' COMMENT 'Type ID', 
    `sku` varchar(64) DEFAULT NULL COMMENT 'SKU', 
    `has_options` smallint(6) NOT NULL DEFAULT '0' COMMENT 'Has Options', 
    `required_options` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT 'Required Options', 
    `created_at` timestamp NULL DEFAULT NULL COMMENT 'Creation Time', 
    `updated_at` timestamp NULL DEFAULT NULL COMMENT 'Update Time', 
    PRIMARY KEY (`entity_id`), 
    KEY `IDX_CATALOG_PRODUCT_ENTITY_ENTITY_TYPE_ID` (`entity_type_id`), 
    KEY `IDX_CATALOG_PRODUCT_ENTITY_ATTRIBUTE_SET_ID` (`attribute_set_id`), 
    KEY `IDX_CATALOG_PRODUCT_ENTITY_SKU` (`sku`), 
    CONSTRAINT `FK_CAT_PRD_ENTT_ATTR_SET_ID_EAV_ATTR_SET_ATTR_SET_ID` FOREIGN KEY (`attribute_set_id`) REFERENCES `eav_attribute_set` (`attribute_set_id`) ON DELETE CASCADE ON UPDATE CASCADE, 
    CONSTRAINT `FK_CAT_PRD_ENTT_ENTT_TYPE_ID_EAV_ENTT_TYPE_ENTT_TYPE_ID` FOREIGN KEY (`entity_type_id`) REFERENCES `eav_entity_type` (`entity_type_id`) ON DELETE CASCADE ON UPDATE CASCADE 
) ENGINE=InnoDB AUTO_INCREMENT=1510 DEFAULT CHARSET=utf8 COMMENT='Catalog Product Table'; 
+0

Значение даты и времени кажется вполне действительным. –

+0

Добавить команду ddl 'create table catalog_product_entity ...' на вопрос –

+0

под редакцией sir ...... – Martin

ответ

1

Проблема заключается в том, что дата/время не существует (с учетом конфигурации сервера) из-за изменения в летнее время.

Тест:

mysql> DROP TABLE IF EXISTS `catalog_product_entity`; 
Query OK, 0 rows affected (0,00 sec) 

mysql> CREATE TABLE `catalog_product_entity` (
    -> `id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
    -> `created_at` TIMESTAMP NULL DEFAULT NULL COMMENT 'Creation Time' 
    ->); 
Query OK, 0 rows affected (0,01 sec) 

mysql> SET GLOBAL time_zone := 'UTC'; 
Query OK, 0 rows affected (0,00 sec) 

mysql> SET time_zone := 'UTC'; 
Query OK, 0 rows affected (0,00 sec) 

mysql> SHOW VARIABLES LIKE '%time_zone%'; 
+------------------+-------+ 
| Variable_name | Value | 
+------------------+-------+ 
| system_time_zone | UTC | 
| time_zone  | UTC | 
+------------------+-------+ 
2 rows in set (0,00 sec) 

mysql> INSERT INTO `catalog_product_entity` 
    -> (`created_at`) 
    -> VALUES 
    -> ('2012-03-25 02:52:08'); 
Query OK, 1 row affected (0,00 sec) 

mysql> SET GLOBAL time_zone := 'Europe/Berlin'; 
Query OK, 0 rows affected (0,00 sec) 

mysql> SET time_zone := 'Europe/Berlin'; 
Query OK, 0 rows affected (0,00 sec) 

mysql> SHOW VARIABLES LIKE '%time_zone%'; 
+------------------+---------------+ 
| Variable_name | Value   | 
+------------------+---------------+ 
| system_time_zone | UTC   | 
| time_zone  | Europe/Berlin | 
+------------------+---------------+ 
2 rows in set (0,00 sec) 

mysql> INSERT INTO `catalog_product_entity` 
    -> (`created_at`) 
    -> VALUES 
    -> ('2012-03-25 02:52:08'); 
ERROR 1292 (22007): Incorrect datetime value: '2012-03-25 02:52:08' for column 'created_at' at row 1 

Дата/время «2012-03-25 2:52:08» в Берлине, например, является недействительным из-за изменений в летнее время. См. Clock Changes in Berlin, Berlin, Germany in 2012.

11.3.1 The DATE, DATETIME, and TIMESTAMP Types

...

MySQL преобразует значения TIMESTAMP из текущей временной зоны в UTC для хранения , и назад от UTC к текущему времени зоны для извлечения. (Это не происходит для других типов, таких как DATETIME.)

...

Смежные вопросы