MYSQL неправильно time.now - PullRequest
       3

MYSQL неправильно time.now

1 голос
/ 07 октября 2010

Мы получили сервер Rails 3 на основе Ruby 1.9.2, работающий на БД MYSQL, и проблемы с настройками time.now и time.zone.now.

Для лучшего объяснения мы предполагаем его 13:00 UTC прямо сейчас.

  • Системное время Ubuntu установлено на 15:00 UTC +02: 00 (Thats CEST (Центральноевропейское летнее время) и соответствует нашему часовому поясу).

  • Время Rails (time.now) установлено на 13:00 + 0200

  • для time.zone.now установлено CEST
  • MYSQL Глобальное время и время сеанса установлены на SYSTEM

теперь мы создаем новую запись в БД MYSQL (через activerecord), которая имеет временную метку.

, но когда мы смотрим на временную метку, ее смещение на -2 часа к текущему времени сервера (в нашем примере 11:00)

Мы попытались установить time.zone в совсем другом для тестирования предложении, это никак не повлияло на новую запись mysql. Также мы попытались установить глобальное время mysql и время сеанса в UTC, безрезультатно.

Единственное, что мы можем сейчас себе представить, в чем может быть проблема, это то, что time.now влияет на запись mysql и задан неправильно. Проблема здесь: мы не можем установить время. Но даже если это как-то возможно (правда?), Не знаю, решит ли это проблему.

Кто-нибудь когда-нибудь имел такую ​​проблему или какие-либо идеи, что может вызвать ее?

1 Ответ

2 голосов
/ 07 октября 2010

Есть две вещи, которые нужно настроить для рельсов.

  1. Текущий часовой пояс, который вы сделали (используется в Time.zone.now), он устанавливает часовой пояс для временных меток взагруженные экземпляры записей.

  2. Часовой пояс, в который эти значения преобразуются при сохранении в БД.Это должно быть установлено в тот же часовой пояс, что и ваша система / MySQL.Я думаю, что эта опция настраивается через: ActiveRecord :: Base.default_timezone =: utc

Поскольку ваше системное время установлено в CEST, вам нужно использовать то же значение, что и дляхорошо.

Причина, по которой существует два параметра конфигурации, заключается в том, что если у вас есть пользователи в нескольких часовых поясах (международная аудитория), тогда Time.zone можно установить по-разному для каждого вошедшего в систему пользователя, и часовой пояс БД преобразуетправильно в часовой пояс Time.zone.

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