Почему MySQL меняет свой часовой пояс между вызовами? - PullRequest
0 голосов
/ 18 мая 2018

Я создаю пару хранимых процедур, чтобы сохранить некоторые данные в моей базе данных разработки, просто чтобы увидеть, что происходит что-то странное.

Во время первых вызовов, около 2 или 3, запись регистрируется по моему местному времени.Однако через пару минут, когда я снова позвонил в SP, я понял, что записи регистрируются с разницей -03: 00: 00 по моему местному времени.

Например:

  • Я запускаю SP, запись зарегистрирована со временем 11: 19

  • Я снова запускаю SP, запись регистрируется со временем 11: 19

  • Я снова запускаю SP, но теперь запись регистрируется со временем 8: 20

И после этого все записи регистрируются с -3 часами из моего локальноговремя.

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

С уважением и заранее спасибо.

Edit (добавление кода)

Это код функции, которую мы используем вместо now ()

CONVERT_TZ(NOW(), 'UTC', 'America/New_York')

Вызов ее один раз возвращает ожидаемый результат, пару минут / вызовыпозже, в другое время.

Решение (на случай, если кто-нибудь пройдет через это)

Не знал, что первая временная метка таблицы, если не указано иное, будетпо умолчанию будет DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP.Как и при обновлении, это переопределило бы нашу пользовательскую функцию для определения даты и использования даты без метки времени, следовательно, разница между датами.

Документы для справки: https://dev.mysql.com/doc/refman/5.5/en/timestamp-initialization.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...