我们在 Windows 7 机器上遇到了这个问题,并解决了它。odbc_fdw 是这样的(对于 pg 9.6 和 64 位平台):http ://www.postgresonline.com/journal/archives/372-ODBC-FDW-now-supports-9.5-and-9.6.html
问题是:上面编译的库 .zip 有两个文件夹:
- \lib,其中仅包含“odbc_fdw.dll”
- \share,其中包含一个“扩展”子文件夹(包含一个 .control 文件和几个 .sql 文件)
- 两个指令 .txt 文件
由于上述 .zip 在 .txt 文件或其他地方没有安装信息,作为没有经验的 postgres 用户,我们想复制
- [postgres_install]\pg96\lib 下的“odbc_fdw.dll”(直接)
- [postgres_install]\pg96\share 下的“扩展”子文件夹(直接)
并且,尝试安装扩展,得到上述错误...“无法访问文件”$libdir/odbc_fdw“:没有这样的文件或目录:”。同时发出 CLI 命令
[postgres_install]\pg_config --libdir
答案是“正确的”:“C:/POSTGR~1/pg96/lib”
直到后来我们才意识到 \lib 和 \share 都有一个“postgresql”子文件夹,我们试图移动
- [postgres_install]\pg96\lib\postgresql 下的“odbc_fdw.dll”
- [postgres_install]\pg96\share\postgresql 下的“扩展”子文件夹
并且,在重新启动它工作的服务后,没有错误。我们可以创建扩展,通过 odbc 连接外部服务器,并能够查询外部 mysql 测试表,将其与本地 postgreql 表连接......一切正常。
因此,错误消息有点误导,因为您无法理解是否以某种方式未正确解析“$libdir”(毕竟错误消息显示它未解析),或者如果是,为什么找不到“文件” “那里”它在哪里。而且,.zip 文件指令也没有说明在哪里安装这些文件。
当然,你必须猜测有一个隐含的“postgresql”子文件夹,在这两种情况下都要考虑。这已经足够了,在我们的案例中......