MySQL で URL タイムゾーンの罠を回避する方法

MySQL で URL タイムゾーンの罠を回避する方法

序文

最近、MySQL 6.0.x 以降の jar を使用する場合、コード URL リンクで serverTimezone を指定する必要があります。例外が発生します:

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

xmlでURLを設定する

<プロパティ名="url" 値="jdbc:mysql://localhost:3306/mybatisstudy"/>

異常

原因: com.mysql.cj.core.exceptions.InvalidConnectionAttributeException: サーバーのタイム ゾーン値 '�й���׼ʱ��' は認識されないか、複数のタイム ゾーンを表します。タイム ゾーン サポートを利用する場合は、サーバーまたは JDBC ドライバー (serverTimezone 構成プロパティ経由) を構成して、より具体的なタイム ゾーン値を使用する必要があります。

タイム ゾーン サポートを使用する場合は、より詳細なタイム ゾーン値を使用するようにサーバーまたは JDBC ドライバー (serverTimezone 構成プロパティ経由) を構成する必要があります。

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

URLの後にパラメータ?serverTimezone=utcを追加します

<プロパティ名="url" 値="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 は協定世界時の略ですが、ここで使用する時間は北京タイムゾーンの East 8 で、UTC より 8 時間進んでいます。

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

4. 解決策

URL のタイムゾーンは中国標準時を使用します。つまり、 serverTimezone=Asia/Shanghai

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

カレンダー cal = Calendar.getInstance();
タイムゾーン timeZone = cal.getTimeZone();
System.out.println(timeZone.getID());
System.out.println(timeZone.getDisplayName());
アジア/上海
中国標準時

要約する

上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に少しでもお役に立てれば幸いです。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM をご愛顧いただき、ありがとうございます。

以下もご興味があるかもしれません:
  • Docker の MySQL コンテナのタイムゾーン問題の修正
  • Java における MySQL タイムゾーン問題の詳細な説明
  • MySQL でタイムゾーンを表示および変更する方法
  • MySQL のタイムスタンプの種類とタイムゾーンの例の詳細な説明
  • MySQL タイムゾーンを変更する方法の概要
  • MySQL クエリ時に文字列の大文字と小文字を区別する方法
  • mysql タイムゾーンの問題
  • PHP と MySQL のタイムゾーンの簡単な概要
  • mysqlはタイムゾーン関連の問題を解決します

<<:  CocosCreatorを使ってシューティングゲームを作る方法

>>:  React は入力値を取得し、2 つのメソッドの例を送信します

推薦する

JS クロスドメイン ソリューション React 構成 リバース プロキシ

クロスドメインソリューションjsonp (get をシミュレート) CORS (クロスオリジンリソー...

Uniapp は DingTalk スキャンコード ログイン サンプル コードを実装します

UniappにはDingTalk認証ログインがないため、この記事ではDingTalk QRコードログ...

1 つの記事で v-model とその修飾子を学ぶ

目次序文v-model の修飾子:怠け者トリム番号さまざまな入力タイプやその他の要素での v-mod...

よくある CSS のヒントと経験談 11 選

1. 画像の下にある数ピクセルの空白を削除するにはどうすればよいですか?コードをコピーコードは次のと...

Dapr を使用してマイクロサービスをゼロから簡素化する例

目次序文1. Dockerをインストールする2. Dapr CLIをインストールする3. Net6 ...

JavaScript のカンマ式が含まれている場合について

JavaScript の if ステートメントで英語のカンマ「,」が表示されることがあります。これは...

HTMLバージョン宣言DOCTYPEタグ

通常のウェブサイトのソースコードを開くと、ソースコードは<!DOCTYPE htmlで始まる必...

MySQL がユーザー名とパスワードの漏洩を引き起こす可能性のある Riddle の脆弱性を公開

MySQL バージョン 5.5 および 5.6 を標的とする Riddle 脆弱性により、中間者攻撃...

Dockerコンテナを介してランプアーキテクチャを構築するプロセス

目次1. Centosイメージを取得する2. nginxイメージをビルドする3. MySQLイメージ...

Dockerボリュームのファイルマッピング方法

背景ブロックチェーン ログ モジュールで作業しているときに、コンテナーが実行されている場合は、ログ ...

CentOS 8.4 に Docker をインストールする詳細なチュートリアル

目次序文:システム要件:インストール環境:古いバージョンをアンインストールします: yum は具体的...

DOCTYPE 文書型宣言 (Web ページ愛好家必読)

DOCTYPE 宣言 作成するすべてのページの先頭に、ドキュメント宣言が必要です。はい、そうでしょう...

Vue 親子コンポーネントの相互値の転送と呼び出し

目次1. 親が子コンポーネントに値を渡す2. 子コンポーネントが親コンポーネントに値を渡す3. 子コ...