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 파일에서 지원되지 않으므로 이를 교체해야 합니다 &
.
다시 실행하고 성공적으로 연결하십시오.
위 코드를 추가하면 왜 정상적으로 실행되나요? useSSL=true
이 부분 에 초점이 맞춰져 있습니다 .
useSSL
이 매개 변수의 매우 중요한 기능은 Mysql에 연결할 때 확인하는 것입니다.JDBC 버전이 연결하려는 현재 Mysql 서버와 일치하면 열 필요가 없으며 JDBC가 현재 버전과 일치하지 않는 경우 Mysql 서버와 호환되지 않음 이 매개변수를 추가하면 데이터베이스를 성공적으로 연결할 수 있습니다.