Mysql 8.0 が Mybatis を使用してデータベースに接続するときに発生する問題
<!-- mybatis主配置文件 -->
<configuration>
<!-- 配置环境 -->
<environments default="mysql">
<!-- 配置mysql环境 -->
<environment id="mysql">
<!-- 配置事务类型 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 配置数据源(连接池) -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
</configuration>
Mysql5.X バージョンの Mybatis 設定ファイルを使用してプログラムを直接設定して実行すると、コンソールから次のようなエラーが返されます。
### Error querying database. Cause: com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
このエラーの要点は、Communications link failure
通信回線に障害があるということです。このエラーが発生した場合は、Mybatis がデータベースにまったく接続されていないことを意味するため、アカウントのパスワードを確認し、サードパーティのデータベース管理ソフトウェアを使用してデータベースに接続しようとしました。結果は正常で、データベースは正常に動作しました。正常に接続されているため、データベース自体の問題は除外されます。
情報を参考にurl
リンクアドレスの末尾に追加しましたuseSSL=true&allowPublicKeyRetrieval=true&serverTimezone=UTC
が、&
実はこの記号は違法であることが分かりました。実際、これが当てはまります。&
シンボルは XML ファイルでサポートされていないため、置き換える必要があります&
。
再度実行すると、正常に接続されます。
上記のコードを追加すると正常に実行できるのはなぜですか? 焦点はuseSSL=true
この部分にあります。
useSSL
このパラメータの非常に重要な機能は、Mysql に接続するときに検証することです。JDBC バージョンが、接続する必要がある現在の Mysql サーバーと一致している場合は、JDBC を開く必要はありません。また、JDBC が現在のバージョンと一致していない場合は、JDBC バージョンを開く必要はありません。 Mysql サーバーと互換性がない このパラメータを追加すると、データベースに正常に接続できるようになります。