Spec-Zone .ru
спецификации, руководства, описания, API
|
Как отмечалось ранее, когда часовой пояс управляет изменением, приложения, которые используют старые правила, становятся устаревшими. Чтобы остаться текущим, необходимо удостовериться, что Ваша системная информация о зоне текущего времени использования используется. Для MySQL есть два фактора, чтобы рассмотреть в остающемся токе:
Время операционной системы влияет на значение, которое сервер MySQL использует в
течение многих времен, если его часовой пояс устанавливается в SYSTEM
.
Удостоверьтесь, что Ваша операционная система использует последнюю информацию о часовом поясе. Для
большинства операционных систем, последнего обновления или пакета обновления готовит Вашу систему к
изменениям времени. Проверьте Веб-сайт на своего поставщика операционной системы для обновления, которое
адресует изменения времени.
Если Вы заменяете систему /etc/localtime
файл
часового пояса с версией, которая использует правила, отличающиеся от тех в действительности при запуске
mysqld, следует перезапустить mysqld так, чтобы это использовало обновленные
правила. Иначе, mysqld не мог бы заметить, когда система изменяет
свое время.
Если Вы используете названные часовые пояса с MySQL, удостоверьтесь что таблицы
часового пояса в mysql
база данных современна. Если у Вашей системы есть
своя собственная zoneinfo база данных, следует перезагрузить таблицы часового пояса MySQL всякий раз,
когда zoneinfo база данных обновляется, используя инструкции, данные ранее в этом разделе. Для систем, у
которых нет их собственной zoneinfo базы данных, проверьте MySQL Developer Zone на обновления. Когда
новое обновление доступно, загрузите его и используйте его, чтобы заменить Ваши таблицы зоны текущего
времени. информация о часовом поясе кэшей mysqld, которую это ищет, таким образом, после
замены таблиц часового пояса, следует перезапустить mysqld, чтобы удостовериться, что это не продолжает
служить устаревшим данным часового пояса.
Если Вы не уверены, доступны ли именованные часовые пояса для использования или как установка часового пояса сервера или клиентами, которые устанавливают их собственный часовой пояс, проверяют, пусты ли Ваши таблицы часового пояса. Следующий запрос определяет, есть ли у таблицы, которая содержит имена часового пояса, какие-либо строки:
mysql> SELECT COUNT(*) FROM
mysql.time_zone_name;
+----------+| COUNT(*) |+----------+| 0 |+----------+
Количество нуля указывает, что таблица пуста. В этом случае никто не может использовать названные часовые пояса, и Вы не должны обновить таблицы. Количество, больше чем нуль, указывает, что таблица не пуста и что ее содержание доступно, чтобы использоваться для именованной поддержки часового пояса. В этом случае следует убедиться, что перезагрузили свои таблицы часового пояса так, чтобы любой, кто использует именованные часовые пояса, получил корректные результаты запроса.
Чтобы проверить, обновляется ли Ваша установка MySQL должным образом для разнообразия в правилах Летнего времени, используйте тест как тот после. Пример использует значения, которые являются соответствующими в течение DST 2007 года 1-часовое изменение, которое происходит в Соединенных Штатах 11 марта в 2:00.
Тест использует эти два запроса:
SELECT CONVERT_TZ('2007-03-11 2:00:00','US/Eastern','US/Central');SELECT CONVERT_TZ('2007-03-11 3:00:00','US/Eastern','US/Central');
Эти две временных стоимости указывают время, в котором происходит изменение DST, и использование именованных часовых поясов требует, чтобы таблицы часового пояса использовались. Требуемый результат состоит в том, что оба запроса возвращают тот же самый результат (входное время, преобразованное в эквивалентное значение в часовом поясе 'US' / Центральном' часовом поясе).
Прежде, чем обновить таблицы часового пояса, Вы видели бы неправильный результат как это:
mysql>SELECT CONVERT_TZ('2007-03-11 2:00:00','US/Eastern','US/Central');
+------------------------------------------------------------+| CONVERT_TZ('2007-03-11 2:00:00','US/Eastern','US/Central') |+------------------------------------------------------------+| 2007-03-11 01:00:00 |+------------------------------------------------------------+mysql>SELECT CONVERT_TZ('2007-03-11 3:00:00','US/Eastern','US/Central');
+------------------------------------------------------------+| CONVERT_TZ('2007-03-11 3:00:00','US/Eastern','US/Central') |+------------------------------------------------------------+| 2007-03-11 02:00:00 |+------------------------------------------------------------+
После обновления таблиц следует видеть корректный результат:
mysql>SELECT CONVERT_TZ('2007-03-11 2:00:00','US/Eastern','US/Central');
+------------------------------------------------------------+| CONVERT_TZ('2007-03-11 2:00:00','US/Eastern','US/Central') |+------------------------------------------------------------+| 2007-03-11 01:00:00 |+------------------------------------------------------------+mysql>SELECT CONVERT_TZ('2007-03-11 3:00:00','US/Eastern','US/Central');
+------------------------------------------------------------+| CONVERT_TZ('2007-03-11 3:00:00','US/Eastern','US/Central') |+------------------------------------------------------------+| 2007-03-11 01:00:00 |+------------------------------------------------------------+