There's an echo in my head

日々のメモ。

MySQLでタイムゾーンの設定

MySQLでその接続セッション中のタイムゾーンを設定しようとしたらエラーが出た:

mysql> SET @@SESSION.time_zone = "Asia/Tokyo";
ERROR 1298 (HY000): Unknown or incorrect time zone: 'Asia/Tokyo'

原因はMySQLタイムゾーンに関する情報が入っていなかったためらしく、それを保持するmysql.time_zoneテーブルが空っぽだった:

mysql> select * from mysql.time_zone;
Empty set (0.00 sec)

次のようにmysql_tzinfo_to_sqlコマンドでzoneinfoを変換してmysqlに登録したら、設定できるようになった:

root# mysql_tzinfo_to_sql /usr/share/zoneinfo/ | mysql -u root mysql

タイムゾーンを変換するCONVERT_TZ()関数でもこの情報は必要になるので要注意。

参考

このブログに出てくるコードスニペッツは、引用あるいは断りがない限りMITライセンスです。