无法从 .NET 应用程序 (Npgsql) 连接到 Heroku Postgres

Posted

技术标签:

【中文标题】无法从 .NET 应用程序 (Npgsql) 连接到 Heroku Postgres【英文标题】:Unable to connect to Heroku Postgres from a .NET application (Npgsql) 【发布时间】:2015-03-19 23:06:33 【问题描述】:

我正在尝试使用 Npgsql 提供程序和实体框架(最新版本)从 C# Windows 窗体应用程序连接到 Heroku Postgres 数据库(爱好开发级别),并且我得到一个带有以下内部异常的 ProviderIncompatibleException :

“提供者没有返回 ProviderManifestToken 字符串。” “致命的: 42501: 拒绝数据库 \"postgres\"" 的权限 详细信息: "用户没有 没有 CONNECT 权限。”

该数据库由同样在 Heroku 上运行的 Ruby on Rails 应用程序访问,我可以通过 Windows 上的 pgAdmin III 访问它。我认为这不是 Npgsql 的问题,因为该连接与本地和远程 PostgreSQL 开发数据库完美配合。

我在 app.config 文件中使用的连接字符串如下所示:

Server=HerokuAmazonAWS;Port=5432;Database=MyHerokuDatabase;User Id=MyHerokuUsername;Password=MyHerokuPassword;SSL=true;SslMode=Require;

由于 Heroku 需要与数据库的 SSL 连接,我已将其设置在连接字符串中,因此这似乎不是问题。这个“数据库 postgres 的权限被拒绝”错误困扰着我,因为我没有尝试连接到该服务器上的 postgres 数据库。您是否有任何想法可能导致此问题以及如何解决?谢谢。

【问题讨论】:

【参考方案1】:

我们已经发布了一个可能修复该问题的错误修复版本:https://github.com/npgsql/npgsql/releases/tag/v2.2.5

假设始终可以连接到数据库“postgres”,但 Amazon Redshift 和 Heroku 似乎都撤销了对它的一般访问权限。现在,改为使用“template1”。

【讨论】:

嗯,显然 template1 也不能使用。我刚刚看到了另一个机会,所以我们会在下一个版本中解决这个问题。 我也遇到了这个问题:数据库“template1”的权限被拒绝。在 heroku 上运行。

以上是关于无法从 .NET 应用程序 (Npgsql) 连接到 Heroku Postgres的主要内容,如果未能解决你的问题,请参考以下文章

将 npgsql 配置为与 .NET 3.5 和 EF 一起使用

Npgsql .net 版本的PostgreSQL数据库连接字符串及参数

Npgsql .net 版本的PostgreSQL数据库连接字符串及参数

Npgsql .net 版本的PostgreSQL数据库连接字符串及参数

ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库

Npgsql Visual Studio客户端SSL证书