2010-12-30 9 views
11

MySQLでは、time_zoneというセッション変数を設定して、タイムゾーンを変更できます。これは有用である。他の国のタイムスタンプを見るとここに例があります:MySQL:my.cnfオプションファイルの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' 
+1

お使いのオペレーティングシステムは何ですか? –

答えて

16

それは

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

ありがとうございます。これは機能します。 – emx

+0

'[mysql]セクションの'/etc/mysql/conf.d/mysql.cnf'に入れておくと、 'mysql:[ERROR]不明な変数 'default_time_zone = Brazil/East''を取得しています。バージョン5.7.20。 – kev

+0

'[mysqld]'の下に置くと、サーバーは再起動せず、 'Job for mysql 'で終了します。制御プロセスがエラーコードで終了したためサービスが失敗しました。詳細については、「systemctl status mysql.service」および「journalctl -xe」を参照してください。 – kev

1

私は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

あなたは「アメリカを使用しようとしている場合にも、あなたはあなたのデータベースが適切なタイムゾーン名が移入されていることを確認したいでしょう/ロサンゼルス"。オフセットを使用することをお勧めします。私は実際にあなたのベースとしてUTCを使用することをお勧めします。その後、あなたのタイムゾーンに基づいてユーザーのためにその時点から時間を変換します。これにより、後で多くの頭痛を軽減し、データベースをすばらしく均一に保ちます。私はそれを非常に明確に説明し、私はこのシステムを利用した下にリンクされたガイドをチェックしてください。それをコード化する方法はたくさんありますが、このアプローチをとることで多くの問題を解決できます。

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

1

少し遅れますが、これはそれにもかかわらず、役に立つかもしれません:

明示的にタイムゾーンを設定する場合、あなたは多くが廃止されましたを念頭に置いて、正しいタイムゾーン名を使用していることを確認します。 https://en.wikipedia.org/wiki/List_of_tz_database_time_zonesを使用して確認することができます。

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

そこでここでは、ユーザー@kevため、アメリカ/ Sao_Pauloを使用すると、代わりにブラジル/東を使用するのでは、動作するはずです。

関連する問題