博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

报错描述:

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