Java を使用したデータベース接続での MySQL タイムゾーンの調整
問題の説明:
MySQL が動作していますTomcat は「GMT」を使用していますが、タイムゾーンは「GMT 8」です。この不一致により、Java を使用してデータベースと対話する場合、日時の格納と取得に不整合が生じます。接続 URL で「useTimezone=true」と「serverTimezone=GMT」を設定しても、問題は解決しません。
解決策:
タイムゾーンの不一致を解決するには、次の手順を実行します。アプローチが推奨されます:
レガシー日付時刻を無効にするコード:
「useLegacyDatetimeCode=false」を含むように接続 URL を更新します。これにより、MySQL でタイムスタンプを管理するための、より新しく正確な方法が有効になります。
String url = "jdbc:mysql://localhost/mydb?useLegacyDatetimeCode=false";
タイムスタンプに Null Calendar を使用する:
設定時setTimestamp メソッドを使用してタイムスタンプを設定する場合は、Calendar オブジェクトが 3 番目のパラメータとして指定されていないことを確認してください。この手順により、データベースのタイムゾーンに従って日付オブジェクトをフォーマットできるようになります。
getTimestamp(int, Timestamp)
サーバーのタイムゾーンを指定する (オプション):
MySQL がサーバーのタイムゾーンを決定する際にあいまいさが発生した場合は、接続時に明示的に指定する必要がある場合があります。 URL.
String url = "jdbc:mysql://localhost/mydb?useLegacyDatetimeCode=false&serverTimezone=America/New_York";
これらの対策を実装することで、MySQL と Java の間のタイムゾーンの不一致を解消し、データベースでの正しい日時の保存と取得を保証できます。
以上が「useTimezone=true」が失敗した場合に MySQL と Java のタイムゾーンの不一致を解決する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。