发表于: 2018-10-14 22:07:53
2 934
一、今天完成的任务
我复现了20181011那天的错误,之前有个问题:
如上使用本地MySQL没有问题。
将localhost改成云服务器公网IP,就可以使用云服务器上的MySQL了。但是我试了不行,出现了以下问题:
Exception in thread "main" org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is 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.
at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:81)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:600)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:657)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:688)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:700)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:751)
at org.springframework.jdbc.core.JdbcTemplate.queryForList(JdbcTemplate.java:832)
at com.jdbctemplate.DaoImpl.PeopleJdbcTemplate.findById(PeopleJdbcTemplate.java:317)
at com.jdbctemplate.PeopleTest.main(PeopleTest.java:32)
Caused by: com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
不解的地方来了,此时,我使用的mysql-connector-java的版本如下所示:
Url为:
jdbc:mysql://39.106.157.24:3306/task1?serverTimezone=UTC&useSSL=true&useUnicode=true&characterEncoding=UTF8
此时依然报错。
Exception in thread "main" org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
Last packet sent to the server was 0 ms ago.
at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:81)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:600)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:657)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:688)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:700)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:751)
at org.springframework.jdbc.core.JdbcTemplate.queryForList(JdbcTemplate.java:832)
at com.jdbctemplate.DaoImpl.PeopleJdbcTemplate.findById(PeopleJdbcTemplate.java:317)
at com.jdbctemplate.PeopleTest.main(PeopleTest.java:32)
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
和上面的报错一致。
<!--value="jdbc:mysql://localhost:3306/task1?serverTimezone=UTC&useSSL=true&useUnicode=true&characterEncoding=UTF8"/>-->
最关键的地方来了!!!!!
将URL后面的useSSL=true去掉,运行成功!!更改成useSSL=false,同样运行成功!
将mysql-connector-java的版本换成8.0.11之后,一样成功运行 !!!
问题的症结在于useSSL=true!!!!
用之前失败的打包方式跑出来了!!!原来不是打包方式有问题,是以上的问题!!!!
二、明天计划的事情
整理代码以及写任务小结。
三、遇到的问题
遇到的问题上面都已提及并解决。
四、收获
遇到问题先放一放,之后在回过头解决。
评论