報錯描述:
com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
Caused by: java.net.SocketTimeoutException: connect timed out
1.所使用的mysql-connector-java為8.0.25,mysql也為8.0.25。
2.idea為社區版的。
使用測試類測試數據庫連接:就報了上面的錯誤。
package com.example.demo; import java.sql.SQLException; import javax.sql.DataSource; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest class DemoApplicationTests { @Test void contextLoads() { } @Autowired DataSource dataSource; @Test void contextLoad() throws SQLException { System.out.println(dataSource.getClass()); System.out.println(dataSource.getConnection()); }
查了很多資料,也換了idea版本,mysql版本,發現都不對,
在嘗試https://www.cnblogs.com/lzj-/p/12904279.html 這個修改的時候,發現這位同學說的連接的符號也從“&”換成”&;不對,修改了之后還是會報錯,無法解析。
但是受到了一些啟發,把自己的localhost改成了127.0.0.1,發現連接成功。
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncodeing=UTF-8&useSSL=false&serverTimezone=GMT
//原來是jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncodeing=UTF-8&useSSL=false&serverTimezone=GMT
//直接用spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test 也可以。
spring.datasource.username=xxxx
spring.datasource.password=xxxxxxx
