Баг: выполняем в консоли
$date
Tue Sep 4 20:26:45 EEST 2007
Tue Sep 4 20:26:45 EEST 2007
а выполнив в mysql
SELECT now();
+---------------------+
| now() |
+---------------------+
| 2007-09-04 17:26:45 |
+---------------------+
+---------------------+
| now() |
+---------------------+
| 2007-09-04 17:26:45 |
+---------------------+
Сразу понятно, что проблема во временных зонах. И правда,
SHOW VARIABLES LIKE 'system_time_zone';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| system_time_zone | UTC |
+------------------+-------+
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| system_time_zone | UTC |
+------------------+-------+
Бороться с этим можно двумя способами – или в переменную окружения TZ перед запуском mysqld_safe установить значение EET (или в какой зоне находитесь Вы), или запуская mysql_safe с ключиком –timezone=EET.
Второе помогло.
Спасибо за наводку DKAnze
Это не баг – это фича. (с)
Временная зона сервера на котором работает MySQL может отличаться от временной зоны, к которой привязаны хранимые данные.
Например на одном из наших американских серверов хранятся данные о событиях с указанием украинского времени.
Vadim Voituk
September 5th, 2007
Я прекрасно понимаю надобность подобной фичи, но как ее контролировать? Чтоб, грубо говоря, при коннекте из США и из Украины NOW() давало время с учетом временной зоны.
dm
September 5th, 2007