postgresql - 在二进制 Windows (7) 64 位 Enterprise DB 安装上创建 PLTCL 语言时出错

标签 postgresql tcl

我刚刚从 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/

相关文章:

pattern-matching - 在 Tcl 中具有名称模式的 tar 不起作用

tomcat - 在 apache tomcat 上运行 Tcl

Tcl:参数评估是否保证是从左到右的?

sql - postgresql如何向用户授予在架构中执行功能的权限

PostgreSQL 命名约定

PostgreSQL SELECT 结果具有不同的 id,更喜欢来自另一个表的特定值

variables - Tcl 中的变量范围和源命令

sql - 如何调整 postgres 中的 index_scan 成本?

sql - 如何将新列添加到具有与同一个表对应的值的表中?

c - 执行 "shimmering"的 Tcl 字符串函数破坏了我在 c 中定义的自定义 tcl 类型