我正在使用VB.NET和MySQL,我正在测试我的应用程序是否可以处理错误的数据库连接。
一个特殊情况是当我输入错误的数据库IP地址时,例如而不是192.168.1.100
我将输入错误的192.168.1.101
。
出于这个原因,我尝试使用try, catch
我的try catch能够捕获到那种错误,但不幸的是我的计算机暂停了几分钟。
这是我正在使用的代码
Public Sub Update_DB_Con()
Check_DB_Con()
Try
MysqlConn.Open()
frmStatus.Database_Status = "Connected"
MysqlConn.Close()
MysqlConn.Dispose()
Catch myerror As MySqlException
frmStatus.Database_Status = "Disconnected"
Console.WriteLine(myerror)
Console.Write("IAM CATCH")
End Try
End Sub
所以我的问题是,如何正确处理MySQL的超时请求?
答案 0 :(得分:1)
在尝试解决此问题时,您面临着TCP / IP的设计。您实际指定的主机没有服务器在MySQL端口上运行(通常是3306),因此不会响应程序的连接请求。它既不接受也不拒绝这种联系。由于TCP的全球影响力,它希望为服务器提供足够的时间来响应Connect。这就是为什么它不会在几毫秒内超时。
Connector / NET内置了对服务器池的支持,因此它会在超时后自动重试。
尝试将ConnectionTimeout = 5添加到连接字符串中。默认值为15.但要注意在生产中执行此操作;在使用大型繁忙系统实现弹性的长期经验之后,选择了默认值。