web-dev-qa-db-ja.com

MySQL:my.cnfオプションファイルでのtime_zoneの設定

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'
15
emx

そのはず

default_time_zone=Brazil/East

詳細: http://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html#sysvar_time_zone

オプション-ファイル形式= default_time_zone

17
ajreal

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'

1
AEQ

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

1
Andrew

少し遅れますが、それでも役に立ちます:

タイムゾーンを明示的に設定するときは、正しいタイムゾーン名を使用していることを確認してください。多くは非推奨となっていることに注意してください。 https://en.wikipedia.org/wiki/List_of_tz_database_time_zones を使用して確認できます。

私の場合、MySQL 5.7を使用すると、非推奨のタイムゾーン名がmysqld.cnfファイルの[mysqld]の下に追加されたときに機能しませんでした。新しいタイムゾーン名を使用し、mysqlサービスを再起動すると、機能しました。

したがって、ここのユーザー@kevの場合、Brazil/Eastを使用する代わりに、America/Sao_Pauloを使用する必要があります。

0
ronan

以下を編集します。

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

~/.my.cnf

[mysql]
init_command="SET time_zone='Brazil/East'"
0
dolmen