gpt4 book ai didi

c# - 尝试删除条目时接收 System.IO.IOException

转载 作者:行者123 更新时间:2023-11-29 14:08:29 27 4
gpt4 key购买 nike

我有一个包含 60 个表的数据库。一个是表 person,它被大量其他表(大约 40 个)引用,主要使用 ON DELETE CASCADE ON UPDATE CASCADE

使用 Npgsql,我尝试运行以下命令:从 person WHERE id = @PersonId 中删除

结果我收到一个 System.IO.Exception:

Npgsql.NpgsqlException (0x80004005): Exception while reading from stream ---> System.IO.IOException: Von der Übertragungsverbindung können keine Daten gelesen werden: Ein Verbindungsversuch ist fehlgeschlagen, da die Gegenstelle nach einer bestimmten Zeitspanne nicht richtig reagiert hat, oder die hergestellte Verbindung war fehlerhaft, da der verbundene Host nicht reagiert hat. ---> System.Net.Sockets.SocketException: Ein Verbindungsversuch ist fehlgeschlagen, da die Gegenstelle nach einer bestimmten Zeitspanne nicht richtig reagiert hat, oder die hergestellte Verbindung war fehlerhaft, da der verbundene Host nicht reagiert hat bei System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags) bei System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) --- Ende der internen Ausnahmestapelüberwachung --- bei System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) bei Npgsql.NpgsqlReadBuffer.<>c__DisplayClass31_0.<g__EnsureLong|0>d.MoveNext() bei Npgsql.NpgsqlReadBuffer.<>c__DisplayClass31_0.<g__EnsureLong|0>d.MoveNext() --- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde --- bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) bei Npgsql.NpgsqlConnector.<>c__DisplayClass161_0.<g__ReadMessageLong|0>d.MoveNext()

在英文中,内部异常是

Npgsql.NpgsqlException (0x80004005): Exception while reading from stream ---> System.IO.IOException: Data can not be read from the transmission connection: A connection attempt failed because the remote station did not respond correctly after a certain period of time, or Established connection was faulty because the connected host did not respond. ---> System.Net.Sockets.SocketException: A connection attempt failed because the remote station did not respond correctly after a certain amount of time, or the connection made failed because the connected host did not respond to System.Net.Sockets. Socket.Receive (Byte [] buffer, Int32 offset, Int32 size, SocketFlags socketFlags) at System.Net.Sockets.NetworkStream.Read (Byte [] buffer, Int32 offset, Int32 size) --- End of internal exception stack trace

在 Postgres 日志中它说:

2019-03-28 12:42:15.077 CET [75060] LOG: konnte Daten vom Client nicht empfangen: unrecognized winsock error 10053

我想这不是死锁,因为日志中没有死锁消息。

我觉得跟表被这么多外键引用有关。但我不知道如何进一步调查。

最佳答案

根据异常(exception)情况,此问题与长时间运行的脚本超时有关。您没有包含代码示例,因此我无法具体提供增加此时间的语法,但设置 commandTimeout = 0 将禁用超时并解决问题。

要在评论中解决您的问题,

Is there any way how I can investigate why it takes such a long time?

它可能只是删除了大量记录。您应该在 C# 之外运行查询,以确保在将查询插入代码之前优化查询。

删除大量记录可能需要一段时间,您应该查看truncate 或其他一些清除设计,例如转储到临时表等。

关于c# - 尝试删除条目时接收 System.IO.IOException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55397025/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com