看似相同的 unixODBC 安装,但一个有效,另一个无效

Seemingly identical unixODBC installations, but one works and the other doesn't

我正在尝试设置 unixODBC 以从多台 (Intel) Mac 计算机访问 Postgres 服务器。

前两台机器使用 Homebrew 安装了 unixodbcpsqlodbc。我已经使用此命令对其进行了测试:

iusql ";Driver=PostgreSQL;Server=172.16.66.30;Port=5432;UID=moshe;Database=appdb;" -v

一个工作正常,另一个显示以下错误:

[unixODBC][Driver Manager]Data source name not found and no default driver specified
[ISQL]ERROR: Could not SQLDriverConnect

我比较了两台机器上的 Homebrew 安装文件,它们是相同的。我有 运行 odbcinst -j 并确认两台机器都在查看相同的文件。此测试唯一相关的配置文件(因为我没有使用命名连接)是位于 /usr/local/etc/odbcinst.ini 的驱动程序文件,它在两台机器上都有以下内容:

[PostgreSQL]
Description     = PostgreSQL ODBC driver (Unicode 13)
Driver          = /usr/local/lib/psqlodbcw.so
CommLog         = 1
UsageCount      = 1

运行 odbcinst -q -d -n PostgreSQL 在两台机器上确认以上信息设置正确。

为什么我在一台机器上出现这个错误?

这个错误似乎是 unixODBC 中的错误。如果 /usr/local/etc/odbc.ini$HOME/.odbc.ini 文件都是空的,就会出现这个错误。如果其中一个文件定义了数据源(即使是 non-functional 占位符),iusql 命令也能正常工作。这是真的,即使手册页说:

A string DSN:

  A string DSN may be provided in its entirety, with no file DSN reference at all:

  $ iusql ";Driver=PostgreSQL Unicode;UID=MyID;PASSWORD=secret" -v

这应该意味着配置文件中也不需要 DSN。

这是放入 $HOME/.odbc.ini 以消除错误的最简单代码:

[placeholder]
Driver = PostgreSQL