我正在尝试使用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
我们有同样的问题。根据这个线程:
我们刚刚注意到,Npgsql在处理来自PostgreSQL 9.3.x的错误消息时存在问题。
Glen Parker已经用我们的最新代码修复了:https : //github.com/npgsql/Npgsql/pull/99。我们正在努力使用此修复程序创建一个新的2.0.12稳定版本。
如果您想尝试一下,可以获取最新的git代码,然后查看它是否对您有效。虽然它处于beta状态。
请告诉我您是否有任何问题。
因此,如果您使用的是PostgreSQL 9.3,则可能是您的问题。在这种情况下,您必须下载修复程序并进行实验,看看这是否真的是您的问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句