Linux(CentOS、最近のリリース)でMySQLを使用しています。 MySQLシステム変数time_zone
にUTCを反映させたい。
(コマンドラインツールmysql
を使用して)MySQLセッションを開始し、タイムゾーン設定を確認すると、次のように表示されます。
mysql> select @session.time_zone ;
+--------------------+
| @session.time_zone |
+--------------------+
| NULL |
+--------------------+
1 row in set (0.00 sec)
( MySQL Set UTC time as default timestamp を参照)serverを構成して、UTCをデフォルトのタイムゾーンにすることができます。 クライアントセッションをデフォルトとしてUTCに設定する必要があります。
上記のページには、SQL構文で次のようにMySQLシステム変数を設定できると記載されています。
mysql> set @session.time_zone="+0:00";
これにより、セッションのタイムゾーンがローカル(SYSTEM
)のタイムゾーンになります。
mysql> show variables like '%zone%' ;
+------------------+--------+
| Variable_name | Value |
+------------------+--------+
| system_time_zone | PDT |
| time_zone | SYSTEM |
+------------------+--------+
2 rows in set (0.00 sec)
私がしたいのは、.my.cnf
の設定のように、タイムゾーンをユーザーの設定の一種として設定することです。
問題は、 MySQL 'mysql'コマンドオプション.my.cnf
の「タイムゾーン」オプションを一覧表示せず、(もちろん、とにかく試してみなければならなかった)
time_zone="+0:00"
私の$HOME/.my.cnf
ファイルでメッセージにつながる
mysql: unknown variable 'time_zone=+0.00'
TZ
環境変数を設定してみましたが、影響はありません。
上記のStackExchangeリファレンスが言うように、私が見つけた唯一の効果的な方法は、SQLコマンドを発行することです。
mysql> select @session.time_zone ;
+--------------------+
| @session.time_zone |
+--------------------+
| NULL |
+--------------------+
1 row in set (0.00 sec)
mysql> set @session.time_zone="+0:00";
Query OK, 0 rows affected (0.00 sec)
mysql> select @session.time_zone ;
+--------------------+
| @session.time_zone |
+--------------------+
| +0:00 |
+--------------------+
1 row in set (0.00 sec)
だから...
私の質問は、MySQLセッション変数を設定するための他のメカニズムがあるのでしょうか?またはセッションのタイムゾーンを設定する他の方法?
使用する default_time_zone=UTC
my.cnf
。
参照: https://stackoverflow.com/questions/4562456/mysql-setting-time-zone-in-my-cnf-options-file
~/.my.cnf
:
[mysql]
init_command="SET time_zone='+0:00'"