无法打开与PostgreSQL的连接

时间:2016-05-18 13:20:46

标签: postgresql powershell odbc

我有一些使用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实例时,我得到一个没有描述的异常:

Exception calling "Open" with "0" argument(s): ""
At C:\Projects\Scripts\Publish\PublishDB.ps1:34 char:5
+     $DBConn.Open();
+     ~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : OdbcException

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                @Override
                public void onPrepared(MediaPlayer mediaPlayer) {
                    videoView.setMediaController(ctrl);
                    ctrl.show();
                    FrameLayout frameLayout = (FrameLayout) ctrl.getParent();
                    ((ViewGroup) frameLayout.getParent()).removeView(frameLayout);
                    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
                    params.addRule(ALIGN_BOTTOM, videoView.getId());
                    ((RelativeLayout) videoView.getParent()).addView(frameLayout, params);
                }
            });

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