我刚刚从 Enterprise DB 安装了最新的 Postgres 二进制文件,并尝试安装一些用户语言,但失败并出现以下错误:
postgres=# create language pltcl;
ERROR: could not load library "C:/Software/PostgreSQL/9.2/lib/pltcl.dll": The specified module could not be found.
postgres=# create language plperl;
ERROR: could not load library "C:/Software/PostgreSQL/9.2/lib/plperl.dll": %1 is not a valid Win32 application.
postgres=# select version();
PostgreSQL 9.2.4, compiled by Visual C++ build 1600, 64-bit
我已经验证上述位置有dll,所以我想知道$libdir是否需要有M$ windows反斜杠而不是unix正斜杠?但我真的不知道。
如果有任何关于如何修复的想法,我将不胜感激。我将尝试 32 位安装。谢谢!
谢谢!
最佳答案
Windows 会引发错误“找不到指定的模块”,但实际上它的意思是“指定的模块或递归地加载需要加载的任何 DLL 找不到”
在这种情况下,您可能没有安装合适的 TCL 运行时。检查安装程序文档以了解它需要什么 TCL 版本。
%1 不是有效的 Win32 应用程序可能是因为您有一个 32 位 PostgreSQL 试图加载 64 位 perl DLL,反之亦然。系统环境中 PATH
上第一个 Perl 需要与 PostgreSQL 具有相同的架构,即都是 32 位或都是 64 位。
在这两种情况下,使用 Dependency Walker (depends.exe
) 检查 plperl.dll 和 pltcl.dll 文件会提供有用的信息。 )来自http://dependencywalker.com/ .. 该工具将帮助您识别任何丢失或不匹配的库。
关于postgresql - 在二进制 Windows (7) 64 位 Enterprise DB 安装上创建 PLTCL 语言时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17496299/