MySQL: установка time_zone в файле опций my.cnf - PullRequest
15 голосов
/ 30 декабря 2010

В MySQL вы можете установить переменную сеанса с именем time_zone , чтобы изменить часовой пояс.Это полезно, например, при просмотре меток времени из другой страны.Вот пример:

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2010-12-30 18:59:18 |
+---------------------+
1 row in set (0.00 sec)

mysql> set time_zone='Brazil/East';
Query OK, 0 rows affected (0.00 sec)

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2010-12-30 09:59:29 |
+---------------------+
1 row in set (0.00 sec)

Можно ли поместить это в файл опции, например .my.cnf?

Когда я пытаюсь, это не работаетВсе, что я получаю, это:

mysql: unknown variable 'time_zone=Brazil/East'

Ответы [ 6 ]

17 голосов
/ 30 декабря 2010

это должно быть

default_time_zone=Brazil/East

детали: http://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html#sysvar_time_zone

Формат файла опций = default_time_zone

0 голосов
/ 06 июня 2019

Отредактируйте следующее:

nano /etc/mysql/conf.d/mysql.cnf && systemctl restart mysql ; systemctl status mysql

MySQL.cnf:

[mysql]
default_time_zone=America/Vancouver

См. Здесь текущие форматы часовых поясов -> https://en.wikipedia.org/wiki/List_of_tz_database_time_zones

0 голосов
/ 28 июня 2018

В ~/.my.cnf:

[mysql]
init_command="SET time_zone='Brazil/East'"
0 голосов
/ 24 апреля 2018

Для MAMP я добавил default_time_zone=-03:00 в [mysqld] в /Applications/MAMP/conf/my.cnf

Я получил бы следующую ошибку для Бразилии / Востока, вероятно, потому что она устарела (https://en.wikipedia.org/wiki/List_of_tz_database_time_zones):

[ERROR] Fatal error: Illegal or unknown default time zone 'Brazil/East'

0 голосов
/ 06 марта 2018

Немного поздно, но, тем не менее, это может быть полезно:

При явной установке часового пояса подтвердите, что вы используете правильное имя часового пояса, учитывая, что многие из них устарели. Вы можете использовать https://en.wikipedia.org/wiki/List_of_tz_database_time_zones для подтверждения.

В моем случае, используя MySQL 5.7, устаревшее имя часового пояса не работало при добавлении его ниже [mysqld] в моем файле mysqld.cnf. Использование нового имени часового пояса и перезапуск службы mysql работали.

Так что для пользователя @kev здесь, использование America / Sao_Paulo должно работать, вместо использования Brazil / East .

0 голосов
/ 24 июня 2017

Я не уверен, что изменилось в Xampp, но это решение работает, только если вы поместите эту строку в нужное место.Поверьте мне, я пытался много раз, и мне пришлось довольно тщательно искать это решение.

default-time-zone = "+00:00"

Пример:

read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
default-time-zone = "+00:00" <--- Place here.
log_error = "mysql_error.log"

https://community.apachefriends.org/f/viewtopic.php?f=16&t=47656

Также,Вы должны быть уверены, что ваша база данных заполнена правильными именами часовых поясов, если вы собираетесь использовать «America / Los_Angeles».Я бы рекомендовал использовать смещение.Я бы порекомендовал использовать UTC в качестве своей базы, а затем конвертировать ваше время с этого момента для пользователей на основе их часового пояса, что избавит вас от многих головных болей позже и сохранит вашу базу данных красивой и единой.Посмотрите руководство, которое я привел ниже, оно очень четко объяснило мне, и я использовал эту систему.Есть много способов его кодирования, но использование этого подхода избавит вас от многих проблем.

http://www.vertabelo.com/blog/technical-articles/the-proper-way-to-handle-multiple-time-zones-in-mysql

...