【问题标题】:Cannot open connection to PostgreSQL无法打开与 PostgreSQL 的连接
【发布时间】:2020-01-08 15:30:52
【问题描述】:

我有一些使用 PowerShell 对 PostgreSQL 实例运行的 SQL 脚本。 我已经安装了 PSQL 9.5 以及 ODBC 驱动程序。我也将它添加到 DSN 列表中

名称:PostgreSQL35W
驱动:PostgreSQL Unicode(x64)

在 PowerShell 中我有下一段代码

$DBConnectionString = "Driver={PostgreSQL Unicode(x64)};Server=$dbServer;Port=5432;Uid=$dbUser;Pwd=$dbPass;"
$DBConn = New-Object System.Data.Odbc.OdbcConnection;
$DBConn.ConnectionString = $DBConnectionString;
$DBConn.Open();
$DBCmd = $DBConn.CreateCommand();
$DBCmd.CommandText = $script;
$DBCmd.ExecuteReader();
$DBConn.Close();

当尝试连接到 PSQL 实例时,我得到一个没有描述的异常:

使用“0”参数调用“Open”的异常:“”
在 C:\Projects\Scripts\Publish\PublishDB.ps1:34 char:5
+ $DBConn.Open();
+ ~~~~~~~~~~~~~~
    + CategoryInfo : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : OdbcException

试图找到有关相关问题的任何信息 - 没有运气。

【问题讨论】:

  • 如果您定义了 DSN,您可能应该使用 DSN connection string,否则 DSN 将毫无意义。如果您想使用“常规”PostgreSQL ODBC connection string:您是否定义了您在其中使用的变量?此外,您似乎没有指定数据库。您是否尝试使用PostgreSQL UNICODE 而不是PostgreSQL Unicode(x64) 作为驱动程序?
  • 我做了,它说没有安装这样的驱动程序。

标签: postgresql powershell odbc


【解决方案1】:

正如@Ansgar Wiechers 所提到的,应使用 DSN 名称而不是驱动程序名称。 所以连接应该如下:

$DBConnectionString = "DSN=PostgreSQL35WServer=$dbServer;Port=5432;Uid=$dbUser;Pwd=$dbPass;"

【讨论】:

    【解决方案2】:

    您可以在这些脚本上调用 PSQL。

    & .\\tools\\pgsql\\psql.exe -d ""$connStr"" -f .\\TestData.sql;
    

    您可以在 PgSql 的安装目录中找到 psql.exe。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-05
      • 1970-01-01
      • 2020-11-09
      • 2012-11-12
      • 1970-01-01
      • 2015-01-23
      • 2011-12-08
      相关资源
      最近更新 更多