[MySQL] タイムゾーンを変更する
EC2 上の MySQL で UTC だったタイムゾーンを、カナダ・バンクーバー時間に変える
Contents
環境
OS (Amazon Linux) タイムゾーン : UTC
PHP タイムゾーン : America/Vancouver
MySQL タイムゾーン : UTC ⇨ これをバンクーバー時間にする
PHP タイムゾーン : America/Vancouver
MySQL タイムゾーン : UTC ⇨ これをバンクーバー時間にする
現在のタイムゾーンを確認
下記 SQL 文で確認できるshow variables like '%time_zone%';
system_time_zone : UTC
time_zone : SYSTEM
time_zone : SYSTEM
MySQL タイムゾーンデータの確認
タイムゾーンを設定するには、time_zone というテーブルにデータが入っていなければならない
それがあるか確認する
select * from mysql.time_zone;
空の場合は、データをインポートする
タイムゾーンのインポート
$ sudo mysql_tzinfo_to_sql /usr/share/zoneinfo
インポートが完了したら、テーブルにデータ入ってることを確認
下記のように、後ろに MySQL への接続情報を記載するよう書いてあるが、これだとエラーになった
「コマンドは、MySQL に接続していない状態で実行します。」 という記述を見かけたので、接続したままコマンド実行したからかも。。。
mysql_tzinfo_to_sql /usr/share/zoneinfo/ | mysql -u hoge mysql -p
エラー内容
Warning: Unable to load '/usr/share/zoneinfo//iso3166.tab' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo//leapseconds' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo//tzdata.zi' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo//zone.tab' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo//zone1970.tab' as time zone. Skipping it.
/etc/my.cnf にタイムゾーンの設定を追加
書き込み権限がない場合には、一時的に書き込み権限を与えておく$ sudo vi /etc/my.cnf
[mysqld]
default-time-zone = 'America/Vancouver'
[mysqld_safe]
timezone = 'America/Vancouver'
service mysqld restart
タイムゾーンが変わったことを確認
system_time_zone : PDT (Pacific daylight time)
time_zone : America/Vancouve
time_zone : America/Vancouve
今はサマータイムだから PDT
サマータイムが終わったら、自動で PST ( Pacific standard time )に変わるはず
以上