解決済み: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException
2022-02-27 23:44:16
IDEAのMySQLドライバを使用したデータベースへの接続に問題があります。
Exception in thread "main" org.apache.ibatis.exceptions.PersistenceException:
### Error querying database. cause: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Client does not support authentication protocol requested by server; consider upgrading MySQL client
### The error may exist in com/itheima/dao/IUserDao.xml
### The error may involve com.hrx.dao.IUserDao.findAll
### The error occurred while executing a query
### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Client does not support authentication protocol requested by server; consider upgrading MySQL client
at org.apache.ibatis.exceptions.Exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:150)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:141)
at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:137)
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:75)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:59)
at com.sun.proxy.$Proxy2.findAll(Unknown Source)
at com.itheima.test.MybatisTest.main(MybatisTest.java:27)
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Client does not support authentication protocol requested by server; consider upgrading MySQL client
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
at com.mysql.jdbc.Util.getInstance(Util.java:381)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:282)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
getConnection(DriverManager.java:208) at java.sql.DriverManager.getConnection(DriverManager.java:208)
at org.apache.ibatis.datasource.unpooled.UnpooledDataSource.getConnection(UnpooledDataSource.java:93)
at org.apache.ibatis.datasource.pooled.PooledDataSource.popConnection(PooledDataSource.java:404)
at org.apache.ibatis.datasource.pooled.PooledDataSource.getConnection(PooledDataSource.java:90)
at org.apache.ibatis.transaction.jdbc.JdbcTransaction.openConnection(JdbcTransaction.java:139)
at org.apache.ibatis.transaction.jdbc.JdbcTransaction.getConnection(JdbcTransaction.java:61)
at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:324)
at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156)
CachingExecutor.query(CachingExecutor.java:109) at org.apache.ibatis.executor.
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:83)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:148)
... 6 more
Process finished with exit code 1
次に、エラーメッセージに基づいて、MySQL ドライバのバージョン番号を確認します。
MySQLのバージョンは8.0ですが、バージョンの不一致の問題のはずです。図のバージョンを8.0.20に変更して再度実行してください。
再び例外が文字化けします。プロンプトに従ってタイムゾーンを変更し、URLアドレスに ?serverTimezone=UTC を追加して再度実行します。
クエリ文は有効ですが、使用したドライバクラスが古いというエラーが発生することを確認してください。
元のドライバは
<property name="driver" value="com.mysql.jdbc.Driver"/>
変更後、正常に動作するようになりました
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<イグ
簡単な3ステップで
1. mysqlのバージョンに対応するドライバを選択します。
2. urlの後にタイムゾーンを追加します。?serverTimezone=UTC
3. 3.ドライバのクラス名を変更する: com.mysql.cj.jdbc.
あれからMySQLは久しぶりですね~~~~~。
関連
-
[解決済み] 1030 ストレージエンジンからエラー28が発生しました
-
[解決済み] MySQLが重複したレコードを削除し、最新のレコードを保持する
-
[解決済み] MySQLから最後のN行を選択する
-
[解決済み] テーブルがクラッシュしたと判定されたため、修復する必要があります。
-
[解決済み] タイムスタンプフィールド 'create_date' のデフォルト値が無効です。
-
[解決済み] シーケライズの作成・更新
-
[解決済み] 不明/サポートされていないストレージエンジン:InnoDB
-
Centos7 インストール mysql+keepalived 高可用性環境
-
今までで一番充実したmysqlの学習ノート、ぜひ一度学習してみませんか?白人のみならず
-
[解決済み] MySQLのUpdateクエリで「フィールドリスト」のカラムが不明なエラーが発生する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】mysql 外部キー制約が不正に形成されているエラー
-
[解決済み] 親の行を削除または更新できない: 外部キー制約に失敗 - MYSQL
-
[解決済み] MongoDBのようにMySQLにもTTLがあるのでしょうか?
-
[解決済み] エラー 2005 (hy000)。Google Cloud SQL クライアントの MySQL サーバーホスト '[35.232.51.216]' (0) が不明です。
-
[解決済み] Node.jsでSequelizeを使用して結合クエリを作成する方法
-
[解決済み] mysqlとphpmyadminの違い?
-
[解決済み] mysqlステートメントの*アスタリスクは何を意味するのですか?
-
MySQLサーバへの接続が「初期通信パケットの読み込み」で切断され、システムエラー:0が発生する場合の対処法
-
[解決済み] SQL - 1つのクエリで複数のレコードを更新する
-
[解決済み] MySql: 'SUM IF' または 'COUNT IF' は可能ですか?