使用Npgsql插入重复记录

phil_rawlings

我正在尝试使用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只是冻结了。果然,如果我检查服务器日志,则会看到以下内容:

duplicate key value violates unique constraint "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()

Backend sent unrecognized response type

对于这是Npgsql中的错误还是与Schema特权有关,我有些迷惑(即使对于该测试,我使用的是“ postgres”超级用户)。

我正在使用Npgsql 2.0.12.0

bshender

我们有同样的问题。根据这个线程:

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

我们刚刚注意到,Npgsql在处理来自PostgreSQL 9.3.x的错误消息时存在问题。

Glen Parker已经用我们的最新代码修复了:https : //github.com/npgsql/Npgsql/pull/99我们正在努力使用此修复程序创建一个新的2.0.12稳定版本。

如果您想尝试一下,可以获取最新的git代码,然后查看它是否对您有效。虽然它处于beta状态。

请告诉我您是否有任何问题。

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章