首页 新闻 会员 周边 捐助

c# 连接mysql数据库,执行语句时每天总有几次链接尝试失败,大部分都是成功的。

0
悬赏园豆:100 [待解决问题]

具体错误内容如下

[METHOD: ExecSql] --- Paras: ,Action: ,ExMsg: Fatal error encountered during command execution., InnerErrMsg: MySql.Data.MySqlClient.MySqlException (0x80004005): Fatal error encountered attempting to read the resultset. ---> MySql.Data.MySqlClient.MySqlException (0x80004005): Reading from the stream has failed. ---> System.IO.IOException: 无法从传输连接中读取数据: 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。。 ---> System.Net.Sockets.SocketException: 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。
在 System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
--- 内部异常堆栈跟踪的结尾 ---
在 System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
在 System.Net.FixedSizeReader.ReadPacket(Byte[] buffer, Int32 offset, Int32 count)
在 System.Net.Security._SslStream.StartFrameHeader(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
在 System.Net.Security._SslStream.StartReading(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
在 System.Net.Security._SslStream.ProcessRead(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
在 System.Net.Security.SslStream.Read(Byte[] buffer, Int32 offset, Int32 count)
在 MySql.Data.MySqlClient.TimedStream.Read(Byte[] buffer, Int32 offset, Int32 count)
在 MySql.Data.MySqlClient.MySqlStream.ReadFully(Stream stream, Byte[] buffer, Int32 offset, Int32 count)
在 MySql.Data.MySqlClient.MySqlStream.LoadPacket()
在 MySql.Data.MySqlClient.MySqlStream.LoadPacket()
在 MySql.Data.MySqlClient.MySqlStream.ReadPacket()
在 MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow, Int64& insertedId)
在 MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId, Boolean force)
在 MySql.Data.MySqlClient.MySqlDataReader.NextResult()
在 MySql.Data.MySqlClient.MySqlDataReader.NextResult()
在 MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior) -- Stack: 在 MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)

Mr丶Yan的主页 Mr丶Yan | 初学一级 | 园豆:64
提问于:2024-11-21 13:57
< >
分享
所有回答(2)
0

可能是 mysql 的连接数不够用了,参考 EFCore 连接 MySql 间歇性报错:你的主机中的软件中止了一个已建立的连接

如果不是连接数不够,可以试试开启 ef core 的自动重连,参考 使用 EF Core 的 EnableRetryOnFailure 解决短暂的数据库连接失败问题

dudu | 园豆:30783 (高人七级) | 2024-11-21 15:58

感谢,这个我看过了,默认151个最大连接数,但是一般连接连20条都没超过,都是查询读取完数据,自动关闭。而且mysql的wait_timeout和interactive_timeout也是28800秒超时,
mysql那边也没报错,就是提示 警告mysql_native_password 将被移除,使用 caching_sha2_password插件替换。

支持(0) 反对(0) Mr丶Yan | 园豆:64 (初学一级) | 2024-11-21 16:10
0

我也有这个问题,但是我没有处理过。就是偶尔刷新就会报错

echo_lovely | 园豆:1544 (小虾三级) | 2024-11-21 16:26
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册