Mysql 8.0 が Mybatis を使用してデータベースに接続するときに発生する問題

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 ファイルでサポートされていないため、置き換える必要があります&amp;

再度実行すると、正常に接続されます。

上記のコードを追加すると正常に実行できるのはなぜですか? 焦点はuseSSL=trueこの部分にあります。

useSSLこのパラメータの非常に重要な機能は、Mysql に接続するときに検証することです。JDBC バージョンが、接続する必要がある現在の Mysql サーバーと一致している場合は、JDBC を開く必要はありません。また、JDBC が現在のバージョンと一致していない場合は、JDBC バージョンを開く必要はありません。 Mysql サーバーと互換性がない このパラメータを追加すると、データベースに正常に接続できるようになります。

おすすめ

転載: blog.csdn.net/Holmes_shuai/article/details/119395783