gpt4 book ai didi

c# - 使用 Npgsql 插入重复记录

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

我正在尝试使用 Npgsql ADO.NET 提供程序将数据插入到下表中:

CREATE SCHEMA core;

CREATE TABLE core.config(
name TEXT NOT NULL,
value TEXT NOT NULL,
CONSTRAINT pk_config PRIMARY KEY (name)
);

第一次插入工作正常,但如果我尝试再次插入同名项目,Npgsql 就会挂起。我希望抛出一个异常,说明违反了主键约束,但 Npgsql 只是卡住了。果然,如果我检查服务器日志,我会看到:

重复键值违反唯一约束“pk_config”

但是这条消息似乎并没有返回到 Npgsql。难道我做错了什么?我的代码在这里:

using (NpgsqlConnection conn = new NpgsqlConnection("Server=127.0.0.1;Port=5432;Database=temp;User Id=postgres;Password=test1"))
{
conn.Open();
string cmdText = "INSERT INTO core.config(name, value) values ('item', 'value')";
using (NpgsqlCommand cmd = new NpgsqlCommand(cmdText, conn))
{
cmd.ExecuteNonQuery(); // This works fine
cmd.ExecuteNonQuery(); // Insert again: this hangs, but would expect an exception
}
}

这是一个大型应用程序的简化版本(因此使用了模式)。然后我尝试公开创建表(未指定模式)。有趣的是,这确实会在第二次调用 ExecuteNonQuery() 时产生异常:

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

我不太清楚这是 Npgsql 中的错误还是与架构权限有关(即使对于此测试我使用的是“postgres” super 用户)。

我正在使用 Npgsql 2.0.12.0

最佳答案

我们遇到了同样的问题。根据这个线程:

http://pgfoundry.org/forum/forum.php?set=custom&forum_id=518&style=nested&max_rows=50&submit=Change+View

We just noticed that Npgsql has a problem when handling error messages from postgresql 9.3.x.

Glen Parker already fixed in our latest code: https://github.com/npgsql/Npgsql/pull/99. We are working to create a new 2.0.12 stable release with this fix.

If you want to give it a try you can get the latest git code and check if it works ok for you. It is in beta state though.

Please, let me know if you have any problems with it.

因此,如果您使用的是 PostgreSQL 9.3,这可能就是您的问题。在这种情况下,您必须下载修复程序并进行实验,看看这是否真的是您的问题。

关于c# - 使用 Npgsql 插入重复记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20019017/

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