我使用的是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的超时请求?
如果要解决这个问题,就违背了TCP/IP的设计。您实际指定的主机在MySQL端口上没有运行服务器(通常是3306),因此不会响应来自程序的连接请求。它既不接受也不拒绝这种联系。由于TCP的全球范围,它希望为服务器提供足够的时间来响应连接。这就是为什么它不会在几毫秒内超时。
Connector/NET内置了对服务器池的支持,因此它会在超时后自动重试。
尝试在连接字符串中添加ConnectionTimeout=5。默认值是15。但是在生产中要小心这样做;默认值是在长期使用大型繁忙系统以获得弹性之后选择的。