【问题标题】:SSL connection string for Azure PostgreSQL - correct syntaxAzure PostgreSQL 的 SSL 连接字符串 - 正确的语法
【发布时间】:2019-12-29 00:24:46
【问题描述】:

我有一个连接到 PostgreSQL 数据库的 Microsoft Excel 工作簿。我已经在 localhost 上使用 db 有一段时间了。

我现在已将我的数据库移至 Azure PostgreSQL。我已成功重新配置我的查询/连接以将数据拉入电子表格(通过在“ODBC 数据源 64 位”中设置 DSN)并将 SSL 设置为要求。

工作簿包含一些用于将数据写回数据库的 vba。我收到错误:

运行时错误:'-2147467259 (80004005)':致命:SSL 连接是 必需的。请指定 SSL 选项并重试。

dbConnPublic.Open sqlConnString 行引发错误

代码的相关部分如下所示:

Sub WriteRowToDB()

' Define connectivity
Dim dbConnPublic As New ADODB.Connection
Dim sqlConnString As String

sqlConnString = OpenConnection()
dbConnPublic.Open sqlConnString

End Sub


Public Function OpenConnection() As String

'Define connection objects and terms
Dim sqlConnString As String

Dim myDriver As String: myDriver = "{PostgreSQL ANSI(x64)}"
Dim myServer As String: myServer = "djm-main-01.postgres.database.azure.com"

Dim myDatabase As String: myDatabase = "postgres"
Dim myUserName As String: myUserName = "djmmain01admin@djm-main-01"
Dim myPassword As String: myPassword = "[my password]" ' this replaced by the real password

' Open connection
sqlConnString = "Driver={PostgreSQL ANSI(x64)};" & _
                "DSN=postgres;" & _
                "Server=" & myServer & ";" & _
                "Port=5432;" & _
                "UID=" & myUserName & ";" & _
                "PWD=" & myPassword & ";" & _
                "Database=" & myDatabase & ";" & _




 "ssl=true;READONLY=0;PROTOCOL=6.4;FAKEOIDINDEX=0;SHOWOIDCOLUMN=0;ROWVERSIONING=0;SHOWSYSTEMTABLES=1"

OpenConnection = sqlConnString

End Function

我已经尝试了 ssl=true、ssl=required、sslmode=required 的所有组合,使用两个参数和三个参数,一些带有大写字母,一些小写字母,一些混合。找不到任何有影响的东西。也不确定此语法是 Azure、PostgreSQL 还是 ADODB。

请注意,我还可以使用 DBeaver 和 Windows 的命令行 psql(使用 SSL)成功连接到 Azure db。

【问题讨论】:

    标签: vba postgresql azure ssl adodb


    【解决方案1】:

    您好,正在观看的人。所以我解决了这个问题。

    其实很简单,必填参数为ssmode=require。它区分大小写。我一定以某种方式从我的排列中错过了这一点。因此假设语法由 PostgreSQL ODBC 驱动程序决定。

    此资源帮助: https://www.connectionstrings.com/

    需要注意的其他问题:当密码包含在连接字符串中时,任何非字母数字都需要进行 url 编码,这是我没有考虑过的,所以我的系统生成的密码必须带有感叹号转换为 %21。我从 HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ 的用户 DSN 获得了编码密码​​

    但是我现在更改了密码,使其不使用非字母数字。

    希望这是有用的。

    【讨论】:

    • 只是为了记录这个以防有人遇到同样的问题,参数是“sslmode=require”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-13
    • 2013-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多