まじめなことを書くつもりでやっています。 適当なことは 「一角獣は夜に啼く」 に書いています。
この広告は、90日以上更新していないブログに表示しています。
JDBC でMySQL に接続するときに使用するMySQL Connector/J (mysql:mysql-connector-java) の話。 サーバー・クライアントのタイムゾーン設定が違っている場合にどう対応するのがいいか。
useLegacyDatetimeCode=false
を入れて、時刻周りの新しい処理が動くようにしろ。そもそもどういう問題に遭遇したのか。
NOW()
関数やDEFAULT CURRENT_TIMESTAMP
で設定された時刻をJava アプリケーション側で取得すると、現在時刻から 9 時間前の時刻が返ってきた。useTimezone
プロパティやserverTimezone
プロパティを使って対応する必要があった。useLegacyDatetimeCode=false
することでタイムゾーン変換などを自動で扱ってくれるようになった。useLegacyDatetimeCode
プロパティを含め、古いタイムゾーン周りのプロパティは全部削除される。タイムゾーンはライブラリ側がちゃんと面倒見てくれるだろう、と思って気にしなかったら、環境を変えてJava アプリケーションとMySQL サーバーのタイムゾーン設定がずれたときにいきなり想定しない動作になったりするので気を付けましょう。
引用をストックしました
引用するにはまずログインしてください
引用をストックできませんでした。再度お試しください
限定公開記事のため引用できません。