Я столкнулся с проблемой при открытии NpgsqlConnection в AspNet Core 2.1. Он корректно работает в AspNet Core 1.1. Ниже приведена ошибка в AspNetCore 2.1.
42501: отказано в разрешении на установку ограниченного параметра "transaction_isolation"
Ниже приведен фрагмент кода.
using (IDbConnection dbConnection = new NpgsqlConnection(this._configuration["SpringData:ConnectionString"]))
{
try
{
///Error occurs while opening the connection
dbConnection.Open();
}
catch
{
}
}
Не знаю, как отладить его дальше и решить.
P.S. Проблема началась после перехода на AspNetCore 2.1 с AspNetCore1.1
Npgsql начал устанавливать режим изоляции транзакции в 4.0.3, как часть загрузки типа (см. github.com/npgsql/npgsql/issues/2020). Однако мне неизвестны ситуации, когда это невозможно. Не могли бы вы предоставить дополнительную информацию о своей базе данных (версия PostgreSQL, Redshift или что-то еще)?
@ Shay Rojansky, я использую базу данных, основанную на Postgres (это не RedShift или RDS PostGres. Это проприетарная БД, основанная на Postgress, но работающая с Ngpsql). Не уверен, что следующая информация полезна. SELECT version (); Версия базы данных 1.2.5-7571 SHOW server_version; 9.5.2





Проблема была решена после перехода на пакет Nuget Npgsql.3.2.7. Раньше он использовал Npgsql 4.0.3, который, похоже, имел некоторые проблемы.
Как вы думаете, почему у Npgsql есть проблемы? Эта ошибка может означать, что отсутствуют разрешения или целевая база данных является более старой версией Postgres (на ум приходит Redshift). Возможно, одна из настроек по умолчанию, используемых в 4.0.3, конфликтует со старой версией Postgres.
@Panagiotis Kanavos, тот же код работает с той же базой данных (с тем же идентификатором пользователя) с Npgsql.3.2.7 и не работает с Npgsql 4.0.3. Изначально я тоже думал, что это проблема с разрешением. Сообщение об ошибке вводит в заблуждение. Я понизил пакет, и он работал без каких-либо изменений в коде
что ничего не говорит о упаковке. Это ошибка Postgres, говорящая, что ваш счет не имеет разрешения. Вы получаете это с помощью Amazon Redshift, который совместим со старыми версиями Postgres. Вы получаете это с Amazon RDS Postgres, который не позволяет изменять многие настройки.
Какая версия целевой базы данных? Вы пытаетесь подключиться к Redshift или RDS Postgres?