Problemas encontrados quando o Mysql 8.0 usa Mybatis para se conectar ao banco de dados
<!-- 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>
Quando eu uso o arquivo de configuração Mybatis da versão Mysql5.X para configurar e executar o programa diretamente, o console me retorna diretamente esse erro:
### Error querying database. Cause: com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
O objetivo desse erro é Communications link failure
que a linha de comunicação está com defeito. Quando esse erro ocorre, significa que o Mybatis não está conectado ao banco de dados, então verifiquei a senha da conta e tentei conectar ao banco de dados com um software de gerenciamento de banco de dados de terceiros. O resultado é normal e o banco de dados pode ser conectado normalmente, então o problema do próprio banco de dados está descartado.
Após consultar as informações, url
adicionei-as no final do endereço do link useSSL=true&allowPublicKeyRetrieval=true&serverTimezone=UTC
, mas descobri que &
esse símbolo na verdade era ilegal. Na verdade, este é o caso, &
o símbolo não é suportado pelo arquivo xml, então precisamos substituí-lo &
.
Execute-o novamente e conecte-se com sucesso.
Por que ele pode ser executado normalmente após adicionar o código acima? O foco está nesta useSSL=true
parte.
useSSL
Uma função muito importante deste parâmetro é verificar ao conectar-se ao Mysql. Quando sua versão JDBC é consistente com o servidor Mysql atual ao qual você precisa se conectar, você não precisa abri-lo; e quando seu JDBC é inconsistente com o atual Servidor MySQL e incompatível Quando este parâmetro é adicionado, o banco de dados pode ser conectado com sucesso.