ホームページ  >  記事  >  データベース  >  mysqlにおけるURLタイムゾーンの罠を回避する方法を詳しく解説

mysqlにおけるURLタイムゾーンの罠を回避する方法を詳しく解説

小云云
小云云オリジナル
2017-12-22 13:38:131585ブラウズ

最近、mysql 6.0.x以降のjarを使用する場合、コードURLのリンクにserverTimezoneを指定する必要があります。例外が発生します。この質問は、mysql の URL タイム ゾーンに関するものです。このトラップに注意しないと、このトラップに遭遇する可能性があります。この記事では、mysql の URL タイム ゾーンのトラップを回避する方法を主に説明します。

1. ServerTimezone が指定されていません

xml

<property name="url" value="jdbc:mysql://localhost:3306/mybatisstudy"/>

で url

Caused by: com.mysql.cj.core.exceptions.InvalidConnectionAttributeException: The server time zone value '�й���׼ʱ��' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.
を設定するときの例外です。タイムゾーンのサポートを使用したい場合は、サーバーまたは JDBC ドライバーを設定する必要があります。より詳細なタイムゾーン値を使用する必要があります。


2. オンライン ソリューション

URL?serverTimezone=utc


<property name="url" value="jdbc:mysql://localhost:3306/springdatastudy?serverTimezone=UTC"/>
の後にパラメータを追加します2.1. 発生した問題

上記のタイム ゾーン プログラムは問題が発生しませんが、次の場合に Java コードを使用しています。データベース時間に問題が発生しました。


たとえば、Java コードに挿入された時刻は 2017-08-21 17:29:56

しかし、データベースに表示される時刻は 2017-08-21 09:29:56


3根本的な原因

はタイムゾーン設定の問題です。


UTC は世界標準時を表しますが、私たちが使用している時間は、UTC より 8 時間進んだ東八区である北京のタイムゾーンです。


UTC + (+0800) = 現地時間(北京)


4. 解決策

urlのタイムゾーンは中国標準時を使用しています。また、serverTimezone=Asia/Shanghai


4.1 Java コードを使用してローカルタイムゾーン ID を取得します

Calendar cal = Calendar.getInstance();
TimeZone timeZone = cal.getTimeZone();
System.out.println(timeZone.getID());
System.out.println(timeZone.getDisplayName());
Asia/Shanghai
中国标准时间
関連推奨事項:


MySQL の or ステートメントの使用例

MySQL のインデックスとトリガーの詳細な説明

MySQL の日付関数の概要

以上がmysqlにおけるURLタイムゾーンの罠を回避する方法を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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