我的java项目一运行就报这个数据库错误

2022-01-05 13:55:12.484 ERROR 18884 --- [eate-1907724117] com.alibaba.druid.pool.DruidDataSource : create connection SQLException, url: jdbc:mysql://localhost:3306/csf?autoreconnect=true, errorCode 0, state 08S01

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet successfully received from the server was 1 milliseconds ago. The last packet sent successfully to the server was 1 milliseconds ago.
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:na]
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) ~[na:na]
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480) ~[na:na]
at com.mysql.jdbc.Util.handleNewInstance(Util.java:425) ~[mysql-connector-java-5.1.46.jar:5.1.46]

数据库连接不上,检查连接相关信息是否正确。

数据库连接失败,MySQL有没有启动呢?3306端口是否正确,有没有修改?

看一下jdbc配置或者mybaits里数据库 把driver URL username password检查一下

Communication 是交互的意思,那么 Communications link failure 就是交互连接失败。一般问题有一下几种情况,题主可以去排查:

  1. 连接 host 或 url 细节是否正确
  2. 连接池的允许的最大链接数是否满足当前特殊情况。比如查询一条记录耗费很长时间,导致其他连接请求进入通道造成大量连接阻塞,而这种情况如果不处理是很容易出现超出数据库连接池的最大连接数量。
  3. 连接超时时间是否配置的够大,比如一条SQL 耗时 50 妙,而最大连接超时时间为30妙,此时就容易出现这个异常。