#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 . Дайте нам знать, если вы соберете больше информации.