Java データベース接続における MySQL タイムゾーンの不一致の解決
特定のシナリオでは、MySQL データベースのタイムゾーンと Java サーバーのタイムゾーンが不一致を引き起こす可能性があります日時値を操作する場合。この記事では、この問題に対処し、MySQL JDBC コネクタを使用した包括的な解決策を提供します。
この問題は、Tomcat が「GMT」で動作するのに「GMT 8」タイム ゾーンを使用するという MySQL のデフォルトの動作に起因します。この不一致により、不正な日時値がデータベースに保存され、Java で取得されます。
これを修正するには、接続 URL を変更して次のパラメータを含める必要があります:
ただし、このアプローチは、 useLegacyDatetimeCode=false の使用。このパラメータは、レガシー日時処理コードを無効にし、MySQL JDBC コネクタの新しいタイムスタンプ処理メカニズムを有効にします。
useLegacyDatetimeCode=false を設定することで、Java コードはタイムスタンプの設定中に Calendar オブジェクトを指定できます。 。この Calendar オブジェクトは null である必要があります。これが存在すると日時値が Web サーバーのタイムゾーンに基づいてフォーマットされ、混乱が生じるためです。
日時値を正しく取得するには、getTimestamp(int)このメソッドは、Calendar オブジェクトを指定せずに使用する必要があります。これにより、データベースのタイム ゾーンがフォーマット専用に使用されるようになります。
このアプローチでは、Web サーバーのタイム ゾーンが無関係になることに注意することが重要です。さらに、MySQL がサーバーのタイム ゾーンがあいまい (EST など) について不満を言う場合は、serverTimezone=
このソリューションでは、大幅な利点があります。 Java アプリケーションから MySQL データベースとインターフェースするときの日時処理の精度が向上しました。
以上がデータベース接続における MySQL と Java のタイムゾーンの競合を解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。