问题

一个批量导数据的程序,加了一张表的导入后,有时会出现 com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure 错误,这个错误在网上非常常见。

问题排查

在网上搜索了一遍后,大多数方案说的原因都是一个数据库链接空闲时间太长了,导致被关闭掉了,而我的这个程序不是这种情况,因为导数据都是不断的在执行,链接不太可能会空闲,这个解决方案明显不符合我的情况,然后在网上看到一篇博客,说是因为批量插入的数据太多,导致超时,这个应该差不多,然后写了代码测试了一下,几万条数据批量插入的时候就会超时报错了。

解决方法

分批插入数据,每次不要太多;修改数据库的连接超时时间(todo)。