当互联网连接丢失时,MySQL连接会发生什么?

时间:2014-02-12 19:36:47

标签: java mysql jdbc connection

我的应用程序服务器与MySQL数据库有连接。此连接全天候开放。

让我们说我的互联网崩溃,或者我要阻止3306端口。

JDBC会抛出错误吗?如果没有,我该如何处理这类问题?

我之所以这样问是因为我之前有过MySQL连接随机停止工作的情况,但是没有关闭,这导致客户超时。

2 个答案:

答案 0 :(得分:1)

您将获得MySQLNonTransientConnectionExceptionCommunicationsException。通常,为了程序安全,您要么:

  • 根据需要打开/关闭连接

  • 连接关闭时重新打开

我个人推荐前者,特别是当用户指定数据库时(某些mysql设置有连接超时)。

修改

我似乎忘了提及连接池,@ThorbjørnRavnAndersen,但这也是一个可行的解决方案。我个人并不这样做,每个线程操作都使用可实例化的SQL连接。

答案 1 :(得分:0)

就个人而言,我将任何数据库调用抛出到try / catch块中,因为总会出现问题。您将需要在catch块中设置一些默认值,如果它出于某种原因碰巧出现在这些默认值上,则向最终用户显示某种(理想上相当漂亮的)错误消息。

运行SQL查询并不总能保证撤回任何类型的结果......任何数量的事情都可能出错 - 服务器可能已关闭,连接可能已经太饱和而无法拉动及时的结果,它也可能坐在各种备份的死点......这些事情必须始终被考虑在内,这就是为什么我建议按照上述方式进行的。

最后,回答你的问题,是的,在任何这种情况下,JDBC实际上都会抛出错误。