日々精進

新しく学んだことを書き留めていきます

Rails - タイムゾーン

タイムゾーン
DreamHostのサーバはカリフォルニアにあるらしい。
なのでタイムゾーンが日本と違う。
Rails内のTime.nowはenvinronment.rbの最後に
ENV['TZ'] = 'Asia/Tokyo'
と書けば日本時間を返してくれるようになるが、問題はmysqlのnow関数。
MySQL :: MySQL 5.1 リファレンスマニュアル :: 4.10.8 MySQL サーバのタイム ゾーン サポートによるとMySQLはサーバのタイムゾーンが2つ(固定のものと変更可能なもの)とセッション毎のタイムゾーンを設定できるらしい。
つまりDB毎に設定はできないってわけね。
しょうがないのでNOWをADDTIME(UTC_TIMESTAMP, '09:00')に書き換えて対応。これならサーバのタイムゾーンがどこでも必ず日本時間を返してくれる。
なんかバッドノウハウっぽいなあ。もっとスマートな解決方法ないかな。


・navicat
今までDBの値をチェックしたり、SQLを実行するのにMySQL Query Browserを使っていたが、値が変更しづらいとかDreamHostにあるDBに接続できないとか色々問題があったので他のツールを探したところ、Navicatというソフトを発見。
これ、MySQL Query Browserよりずっといいです。良い点は
SSH経由でDBに接続できる=DreamHostのDBに接続できる
・値の変更が容易
・タブ形式で複数のクエリやテーブルのビューを開いておける
などなど。無料のLite版を使っているんだけど、これで十分かも。
次の課題はMySQLの自動バックアップだな。