Значения, вставленные в столбец bigint, отображаются как дата

#mysql

#mysql

Вопрос:

Моя таблица выглядит следующим образом;

 CREATE TABLE `runlog` (
  `id` int NOT NULL AUTO_INCREMENT,
  `contentid` int DEFAULT NULL,
  `contentType` int DEFAULT NULL,
  `overlay` varchar(45) CHARACTER SET latin1 COLLATE latin1_swedish_ci DEFAULT NULL,
  `option` varchar(45) CHARACTER SET latin1 COLLATE latin1_swedish_ci DEFAULT NULL,
  `trt` int DEFAULT NULL,
  `contentaltid` int DEFAULT '0',
  `channelName` varchar(45) DEFAULT NULL,
  `datetime` bigint NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=225129 DEFAULT CHARSET=utf8;
 

В столбце datetime предполагается сохранить временную метку unix. Ранее у меня был столбец, который сохранял тип данных «timestamp». Я запустился update runlog set 'datetime' unix_timestamp(timestamp) * 1000 , когда внес изменения, и ранее созданные записи верны. Но с этого момента, если я сделаю

insert into runlog (contentid, contenttype, overlay, datetime, trt) values (3107, 0, 'None', 1639161815692, 185.75 )

в таблице вставленная запись гласит;

 '225126', '3107', '0', 'LATE', NULL, NULL, '0', 'East', '20211209230329'
 

Почему это займет 1639161815692 и вернет 20211209230329?

Комментарии:

1. Я нахожу более загадочным тот факт, что 'None' преобразуется в 'LATE' . Я предполагаю, что вы запрашиваете другую строку. (Кстати, я не могу его воспроизвести ).

2. Есть ли у вас какие-либо триггеры в этой таблице, которые изменяют значения перед вставкой?

3. Вы либо просматриваете неправильные записи (возможно, некоторые строки, которые были вставлены в более ранних тестах, вы еще не вызывали unix_timestamp() ), либо есть триггер BEFORE INSERT . Дайте нам знать, если вы соберете больше информации.