【问题标题】:Npgsql throws incorrect ExceptionNpgsql 抛出不正确的异常
【发布时间】:2015-11-24 15:03:10
【问题描述】:

Npgsql 有一个奇怪的问题。我尝试删除具有外键且仍在使用的表中的记录。 Postgres 的命令行给了我一个Key is still referenced 错误,这是意料之中的。

但是,如果我尝试在我的应用程序中使用 Npgsql 执行此操作,则会收到以下异常:

后端发送无法识别的响应类型:e

根据互联网上的消息,这很可能是由多线程引起的,但我在此应用程序中没有使用其他线程。我检查了所有代码都在“主线程”上运行。

然后,如果我发现该异常并尝试使用此代码再次查询我的数据库:

DataSet ds = new DataSet();
NpgsqlDataAdapter da = new NpgsqlDataAdapter(cmd);
ds.Reset();
da.Fill(ds);

我得到了这个例外:

如果底层流不可查找,则在读取缓冲区不为空时无法写入 BufferedStream。确保此 BufferedStream 下的流可以在此 BufferedStream 上寻找或避免交错读取和写入操作。

我想要的只是捕获错误,告诉用户他不能删除记录并完成。现在,它无缘无故地关闭了整个应用程序。

【问题讨论】:

  • 这不是使用 Npgsql 时应该看到的异常。这意味着由于某种原因,Npgsql 在处理数据库时所看到的并不是它所期望的,即使在错误条件下也是如此。它没有正确处理它是一个错误。产生一个最小的复制并与他们一起打开一个错误。

标签: c# npgsql


【解决方案1】:

这是Npgsql 中的一个错误。我将 DLL 更新到 2.2.7 版,现在我得到了正确的异常。

【讨论】:

    猜你喜欢
    • 2011-02-13
    • 2022-01-01
    • 1970-01-01
    • 2015-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多