MySQL例外に対する一般的な解決策をいくつか分析する

MySQL例外に対する一般的な解決策をいくつか分析する

序文

エラーは次のとおりです:

トランザクションの JDBC 接続を開けませんでした。ネストされた例外は java.sql.SQLException です: 基礎となるデータベースから接続を取得できませんでした。

このタイプのエラーについては、説明を参照してください。一言で言えば、「JDBC ドライバーが例外をスローしたため、データベースに接続できませんでした。」

1. コードによって設定されたデータベース名またはパスワードがローカルデータベースと一致していません

1.1. エラーの説明

最初の、そして最も一般的なエラーは、コードによって構成されたデータベース名またはパスワードがローカル データベースと一致しておらず、例外がスローされることです。

上図に示すように、設定ファイルでは、先頭の name 属性はデフォルトであり、変更する必要はありません。ユーザー名は通常、root です。データベース管理ソフトウェアを通じてローカル設定を直接表示できます。データベース パスワードは、ユーザーが設定します。

1.2 解決策

設定ファイルの名前とパスワードを変更します。

2. インポートされた非ローカルプロジェクトファイルがローカルデータベースのバージョンと一致しない

2.1. エラーの説明

2 番目によくあるエラー: IDE (Eclipse など) を使用してインポートされた非ローカル プロジェクト ファイルが、ローカル データベースのバージョンと一致しません。

たとえば、Eclipse プロジェクトにインポートする jar パッケージはバージョン 8.0 に依存しますが、ローカルにインストールした MySQL データベースはバージョン 5.0 なので、当然エラーが発生します。

2.2 解決策

インポートしたプロジェクトで参照ライブラリを見つけ、右クリック → ビルド パス → ビルド パスの構成... を選択します。プロジェクトが依存する 8.0 MySQL ドライバーを削除し、ローカルにインストールした 5.0 バージョンを追加します。

3. MySQL 構成の上位バージョンでドライバー パッケージをロードする際にエラーが発生しました (MySQL 8.0 を例に挙げます)

このエラーは、MySQL バージョンの更新後にドライバー パッケージが変更されたために発生します。新しいドライバー クラスは com.mysql.cj.jdbc.Driver です。

3.1. エラーの説明

エラーは次のとおりです:

クラス com.mysql.jdbc.Driver をロードしています。これは非推奨です。新しいドライバ クラスは com.mysql.cj.jdbc.Driver です。ドライバは SPI 経由で自動的に登録されるため、ドライバ クラスを手動でロードする必要は通常ありません。

エラーの説明: ドライバー クラス 'com.mysql.jdbc.Driver' は非推奨です。新しいドライバー クラスは 'com.mysql.cj.jdbc.Driver' です。ドライバーは SPI 経由で自動的に登録されるため、通常はドライバー クラスを手動でロードする必要はありません。

3.2 解決策

MySQL データベース 5.0 で使用されるドライバー クラス com.mysql.jdbc.Driver を com.mysql.cj.jdbc.Driver に変更します。ドライバーは SPI を通じて自動的に登録されるため、通常はドライバー クラスを手動でロードする必要はありません。変更された構成ファイルを次の図に示します。

<!-- データベース ドライバーをロードします -->
<プロパティ名="driverClass" 値="com.mysql.cj.jdbc.Driver"></プロパティ>

3.3. MySQLの異なるバージョンのドライバクラスを表示する方法

MySQL ドライバー クラスの場合、各バージョンを確認するときに、ドライバー jar パッケージをクリックして、ドライバーが配置されている場所を直接確認できます。たとえば、次の図に示すように、8.0 バージョンは com.mysql.cj.jdbc.Driver です。

4. データベース接続文字列の高バージョン構成エラー(タイムゾーンの問題)

注意: MySQL バージョン 6.0 以降ではタイム ゾーンを設定する必要があります。

4.1. エラーの説明

エラーは次のとおりです:

2020-01-14 00:45:30,876 エラー [DruidDataSource.java:616]: データソース初期化エラー java.sql.SQLException: サーバーのタイムゾーン値 '???ú±ê×??±??' は認識されないか、複数のタイムゾーンを表します。タイムゾーン サポートを利用する場合は、サーバーまたは JDBC ドライバー (serverTimezone 構成プロパティ経由) を構成して、より具体的なタイムゾーン値を使用する必要があります。

4.2 解決策

より具体的なタイム ゾーン値を使用するようにサーバーまたは JDBC ドライバー (serverTimezone 構成プロパティ経由) を構成することにより、タイム ゾーン サポートを活用できます。

設定ファイルは次のとおりです。

<!-- データベース接続文字列 -->
<プロパティ名="jdbcUrl" 値="jdbc:mysql://localhost:3306/demo?serverTimezone=GMT%2B8&amp;characterEncoding=utf-8"></プロパティ>

5. データベースへのデータの書き込みに 8 時間の差があるのはなぜですか?

5.1. エラーの説明

Java データベース接続では、UTC タイムゾーン (協定世界時) が使用されます (serverTimezone=UTC)。北京時間は UTC 時間より 8 時間早い (UTC+08:00) です。serverTimezone=UTC を直接使用すると、データベースに書き込まれるデータは 8 時間進みます。次の構成を使用すると、データベースに書き込まれるデータは 8 時間間隔になります。

<!-- データベース接続文字列 -->
<プロパティ名="jdbcUrl" 値="jdbc:mysql://localhost:3306/demo?serverTimezone=UTC&amp;characterEncoding=utf-8"></プロパティ>

5.2 解決策

サーバーのタイムゾーンを北京時間 GMT%、上海時間 Asia/Shanghai、または香港時間 Hongkong に変更できます。

設定ファイルは次のとおりです。

<!-- データベース接続文字列 -->
<プロパティ名="jdbcUrl" 値="jdbc:mysql://localhost:3306/demo?serverTimezone=GMT%2B8&amp;characterEncoding=utf-8"></プロパティ>

また、MySQL の my.ini 設定ファイルも変更できます。この記事は、該当する問題を解決するためだけに使用されているため、詳細には説明しません。

6. SSL接続の問題

6.1. エラーの説明

エラーは次のとおりです:

Sun Oct 14 00:45:30 CST 2018 警告: サーバーの ID 検証なしで SSL 接続を確立することは推奨されません。MySQL 5.5.45+、5.6.26+、および 5.7.6+ の要件によると、明示的なオプションが設定されていない場合は、デフォルトで SSL 接続を確立する必要があります。SSL を使用していない既存のアプリケーションに準拠するには、verifyServerCertificate プロパティを 'false' に設定してください。useSSL=false を設定して SSL を明示的に無効にするか、useSSL=true を設定してサーバー証明書の検証用にトラストストアを提供する必要があります。

エラーの説明: サーバー認証なしで SSL 接続を確立することは推奨されません。 MySQL 5.5.45+、5.6.26+、および 5.7.6+ の SSL 接続要件によれば、接続モードが設定されていない場合は、デフォルトで SSL 接続を確立する必要があります。 SSL を使用しない既存のアプリケーションの場合、サーバーの verify-certificate プロパティは「false」に設定されます。 useSSL=false を設定して SSL を明示的に無効にするか、useSSL=true を設定してサーバーの検証済み証明書を提供する必要があります。

6.2 解決策

  • テストに適したデータベース URL 接続アドレスに useSSL = false を追加します。
  • データベース URL 接続アドレスに useSSL = true を追加し、サーバーの認証証明書を提供します。

設定ファイルは次のとおりです。

 <!-- データベース接続文字列 -->
<プロパティ名="jdbcUrl" 値="jdbc:mysql://localhost:3306/demo?useSSL=false&amp;ser​​verTimezone=GMT%2B8&amp;characterEncoding=utf-8"></プロパティ>

要約する

MySQL 例外に対する一般的な解決策をいくつかまとめることで、基礎となる MySQL の理解を深めることができます。開発をしている限り、ミスは絶えず起こるので、まとめるのが上手でなければなりません。同時に、開発の基本原則を完全に理解し、開発者としてさまざまなバージョンの反復に遅れずについていく必要があります。そうしないと、技術の発展に追いつくことはできません。

上記は、MySQL 例外に対するいくつかの一般的な解決策の詳細な分析です。MySQL 例外の解決策の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • MySQL リンクを表示し、異常なリンクを削除する方法
  • MySQLがbinlogファイルを手動で登録し、マスタースレーブ異常を引き起こす理由
  • MySQL データベース接続例外の概要 (収集する価値あり)
  • mysql5.7.21 の異常起動を修正する方法
  • MySQL innodb例外の修復に関する経験の共有
  • MySQLの定義と例外処理の詳細
  • MySQL ストアド プロシージャの基本的な例外処理のチュートリアル
  • MySQLの異常なクエリケースの分析
  • MySQL 例外処理の簡単な分析

<<:  Nginx は高可用性クラスタ構築を実装します (Keepalived+Haproxy+Nginx)

>>:  モバイルアダプティブスタイルで@mediaを使用する方法

推薦する

yum を使用して rpm と関連する依存関係をダウンロードして、docker をオフラインでインストールします。

yum を使用してすべての依存関係を一緒にインストールできますが、–downloadonly –d...

Linux でマウントされたファイルシステムの種類を表示する方法

序文ご存知のとおり、Linux は ext4、ext3、ext2、sysfs、securityfs、...

オペレーターが知っておくべき 18 個の Nginx プロキシ キャッシュ構成のヒント (どれを知っていますか?)

アプリケーションや Web サイトのパフォーマンスが成功の重要な要素であることは誰もが知っています。...

JSは5つ星の賞賛効果を達成

JS を使用してオブジェクト指向メソッドを実装し、JD.com の 5 つ星レビュー効果を実現します...

JavaScript Sandboxについての簡単な説明

序文:サンドボックスといえば、私たちの頭には反射的に上の写真が思い浮かび、すぐに興味がわいてくるかも...

Ubuntu で FTP サーバーを構築する方法の詳細な説明 (成功保証)

1. 今日の午後、コースの要件により、Ubuntu で FTP サーバーを設定する実験を行う必要が...

WindowsでcmdからDOSウィンドウに入り、MySQLデータベースにアクセスします。

1. win + R を押して cmd と入力し、DOS ウィンドウに入ります。 2. MySQL...

複数のドメイン名、ポート、IP仮想ホストに基づくNginx構成

1. タイプの導入1.1 ドメインベースの仮想ホスティングいわゆるドメイン名ベースの仮想ホストとは、...

Webフロントエンドインターフェースの設計に必須のスキル

[必須] ユーザーインターフェースPhotoShop/花火デザインアーティストと協力して、スケッチを...

HTML の基本 - ハイパーリンク スタイルを設定する簡単な例

*** ハイパーリンクのスタイル設定の例a:link クリックされる前のハイパーリンクの状態a:vi...

axios リクエストのカプセル化に基づく Vue アプリケーションのサンプルコード

目次axiosとは何ですか? Axios リクエストタイプ? Axiosはデフォルトのカスタム構成を...

この記事は、JQueryの基本的な操作を理解し、始めるのに役立ちます。

目次1. Jquery を使用する手順: (1)jsライブラリをインポートする(2)ページ読み込みイ...

HTML 5 プレビュー

<br />オリジナル: http://www.alistapart.com/artic...

7つのMySQL JOINタイプのまとめ

始める前に、これから紹介する JOIN タイプを示すために 2 つのテーブルを作成します。テーブルを...

Navicat Premium が MySQL 8.0 に接続してエラー「1251」を報告する問題を解決する方法の分析

長い間何もしていなかった人は、努力をすると一生懸命働いていると思うようになります。 1. 問題Nav...