ホームページ  >  記事  >  データベース  >  データベース接続における MySQL と Java のタイムゾーンの競合を解決するにはどうすればよいですか?

データベース接続における MySQL と Java のタイムゾーンの競合を解決するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-27 14:20:12134ブラウズ

How to Resolve MySQL and Java Time Zone Conflicts in Database Connections?

Java データベース接続における MySQL タイムゾーンの不一致の解決

特定のシナリオでは、MySQL データベースのタイムゾーンと Java サーバーのタイムゾーンが不一致を引き起こす可能性があります日時値を操作する場合。この記事では、この問題に対処し、MySQL JDBC コネクタを使用した包括的な解決策を提供します。

この問題は、Tomcat が「GMT」で動作するのに「GMT 8」タイム ゾーンを使用するという MySQL のデフォルトの動作に起因します。この不一致により、不正な日時値がデータベースに保存され、Java で取得されます。

これを修正するには、接続 URL を変更して次のパラメータを含める必要があります:

  • useTimezone=true: のタイムゾーンのサポートを有効にします。
  • serverTimezone=GMT: データベース サーバーのタイム ゾーンを指定します。

ただし、このアプローチは、 useLegacyDatetimeCode=false の使用。このパラメータは、レガシー日時処理コードを無効にし、MySQL JDBC コネクタの新しいタイムスタンプ処理メカニズムを有効にします。

useLegacyDatetimeCode=false を設定することで、Java コードはタイムスタンプの設定中に Calendar オブジェクトを指定できます。 。この Calendar オブジェクトは null である必要があります。これが存在すると日時値が Web サーバーのタイムゾーンに基づいてフォーマットされ、混乱が生じるためです。

日時値を正しく取得するには、getTimestamp(int)このメソッドは、Calendar オブジェクトを指定せずに使用する必要があります。これにより、データベースのタイム ゾーンがフォーマット専用に使用されるようになります。

このアプローチでは、Web サーバーのタイム ゾーンが無関係になることに注意することが重要です。さらに、MySQL がサーバーのタイム ゾーンがあいまい (EST など) について不満を言う場合は、serverTimezone= を使用して接続 URL で明示的に指定できます。

このソリューションでは、大幅な利点があります。 Java アプリケーションから MySQL データベースとインターフェースするときの日時処理の精度が向上しました。

以上がデータベース接続における MySQL と Java のタイムゾーンの競合を解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。