技术背景:Groovy 2.5.6使用Java 8. MariaDb数据库。
背景:我有一个报告系统。不同的报告被添加到数据库表中。一个作业每15分钟执行一次,并将报告从“新建”状态置于“正在进行”状态。然后,一旦作业成功执行,报告将更新为“完成”状态。如果发生任何异常,报告将置于“错误”状态。
问题是,一旦作业执行,报告就无法保存。在日志中,我可以看到我得到了SQL Error: -1, SQLState: 08000
和(conn=64796) Socket error
。这向我表明数据库存在连接问题。这后面是SQL Error: 1220, SQLState: 08000
。
数据库连接出现问题,该连接已关闭。应用程序无法生成报告和更新记录。
我将报告再次置于“新建”状态,并让作业重新运行。同样的问题再次出现。因此,我能够复制它。我实际上没有明确的方法来进行故障排除。
如何解决这个错误?这是否与Java 8有关?
1条答案
按热度按时间k7fdbhmy1#
这是刚开始发生的吗?之前是如何保持连接活动的?一种方法是:
在本例中,validationQuery设置为“SELECT 1”,这是一个简单的查询,将始终返回结果。此查询将每30秒执行一次(由validationInterval指定),以确保连接仍然处于活动状态。