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통신 회선에 결함이 있다는 것입니다. 이 오류가 발생하면 마이바티스가 데이터베이스에 전혀 연결되어 있지 않다는 것이므로 계정 비밀번호를 확인하고 타사 데이터베이스 관리 소프트웨어를 사용하여 데이터베이스에 연결을 시도했지만 결과는 정상이며 데이터베이스가 정상적으로 작동될 수 있습니다. 정상적으로 연결되었으므로 데이터베이스 자체의 문제는 배제됩니다.

정보를 참고한 후 url링크 주소 끝에 추가했는데 , 이 기호가 실제로는 불법임을 useSSL=true&allowPublicKeyRetrieval=true&serverTimezone=UTC알게 되었습니다 . &실제로 이런 경우에는 &해당 기호가 xml 파일에서 지원되지 않으므로 이를 교체해야 합니다 &amp;.

다시 실행하고 성공적으로 연결하십시오.

위 코드를 추가하면 왜 정상적으로 실행되나요? useSSL=true이 부분 에 초점이 맞춰져 있습니다 .

useSSL이 매개 변수의 매우 중요한 기능은 Mysql에 연결할 때 확인하는 것입니다.JDBC 버전이 연결하려는 현재 Mysql 서버와 일치하면 열 필요가 없으며 JDBC가 현재 버전과 일치하지 않는 경우 Mysql 서버와 호환되지 않음 이 매개변수를 추가하면 데이터베이스를 성공적으로 연결할 수 있습니다.

추천

출처blog.csdn.net/Holmes_shuai/article/details/119395783