Help us understand the problem. What is going on with this article?

RDS(MySQL)でJSTを使う たった1つの冴えたやり方

More than 5 years have passed since last update.

RDS(MySQL)でJSTを使う たった1つの冴えたやり方

RDS(MySQL)のシステム標準設定はUTCかつ変更不可能

$ date
2014年 5月30日 金曜日 20時56分02秒 JST
$ echo 'select now()' | mysql -h mysql.foobar.ap-northeast-1.rds.amazonaws.com -u admin -p 
Enter password: 
now()
2014-05-30 11:56:20

アンチパターン

init_connect に "SET SESSION time_zone = 'Asia/Tokyo';"と書く

→フェイルオーバー時にハマる (rdsadminユーザなどではTimezoneがUTCでないとダメ)

ストアドプロシージャを入れて init_connect から呼ぶ

例)

IF NOT (POSITION(‘rdsadmin@’ IN CURRENT_USER()) = 1) THEN
SET SESSION time_zone = ‘Asia/Tokyo’;
END IF

→ ストアド入れる前にパラメータグループ適用しちゃったりとかでハマる

おそらく一番簡単なやり方

下記をinit_connectに設定する

SET SESSION time_zone = CASE WHEN POSITION('rds' IN CURRENT_USER()) = 1 THEN 'UTC' ELSE 'Asia/Tokyo' END;

rdsで始まるユーザ名であった場合UTCを、そうでない場合には日本時間に設定
適用後)

$ date
2014年 5月30日 金曜日 21時04分48秒 JST
$ echo 'select now()' | mysql -h mysql.foobar.ap-northeast-1.rds.amazonaws.com -u admin -p 
Enter password: 
now()
2014-05-30 21:04:57

日本時間になりました!

j3tm0t0
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away