Я пытаюсь вставить данные в следующую таблицу с помощью Npgsql поставщика ADO.NET:Вставка дубликата записи с помощью Npgsql
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
Yay. Я рад, что у тебя такая же проблема, как у меня. Я тоже использовал 2.0.12, но на PG 9.4. Я дам новую версию npgsql. –