Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте,
при апгрейде трекера на более новую версию, возник конфликт типов в базе.
В старой версии формат полей для даты-времени был DATETIME.
В новой - TIMESTAMP.
Инсталлер проагрейдил таблицы, тип столбцов изменился на TIMESTAMP, все верно.
Но теперь при работе трекера возникает ошибка:
Неактивен
wawa написал:
Инсталлер проагрейдил таблицы, тип столбцов изменился на TIMESTAMP, все верно.
Этого как раз и не произошло. Ошибка указывает на то, что столбец с названием timestamp имеет тип datetime.
Неактивен
да вроде правильно: timestamp.
см. скриншот.
Неактивен
тогда это странно, вроде всё должно быть в порядке
Неактивен
Честно говоря, не понятно, что у Вас за код такой. MySQL понимает даты
(независимо, TIMESTAMP или DATETIME) в двух форматах: '2010-03-01' и
20100301. Отличаются они кавычками и знаками между числами. В Вашем
случае Вы пытаетесь вставить в TIMESTAMP 1270 год, что приводит к
непониманию, т.к. в TIMESTAMP даты до 1970 года не помещаются (а в
DATETIME помещаются и это основное их отличие):
test > CREATE TABLE a (a TIMESTAMP); Query OK, 0 rows affected (0.03 sec) test > INSERT INTO a VALUES (20101010); Query OK, 1 row affected (0.00 sec) test > INSERT INTO a VALUES (12701010); ERROR 1292 (22007): Incorrect datetime value: '12701010' for column 'a' at row 1 test > ALTER TABLE a MODIFY a DATETIME; Query OK, 1 row affected (0.08 sec) Records: 1 Duplicates: 0 Warnings: 0 test > INSERT INTO a VALUES (12701010); Query OK, 1 row affected (0.00 sec)
Подозреваю, что в коде где-то забыли добавить FROM_UNIXTIME().
Неактивен
Спасибо за подсказку.
Выяснил, что upgrade базы не сработал должным образом.
По задумке разработчиков, типы DATETIME должны быть преобразованы в INT(10). По всем таблицам.
Но они остались прежними.
Буду разбираться дальше.
Неактивен