您必须在两个地方启用调试。在 PGAdmin 和数据库本身上。您引用的那篇文章很好地解释了这一点,但存在一些细微差别。
PGAdmin
当更新你的postgresql.conf
文件来加载调试库,我是在 Windows 上运行 PGAdmin https://stackoverflow.com/a/4465482/316857所以文件在这里:
C:\Program Files\PostgreSQL\9.4\data\postgresql.conf
以及通往plugin_debugger.dll
实际上是
$libdir/plugin_debugger.dll
not
$libdir/plugins/plugin_debugger.dll
如文章中所指定。所以你的postgresql.conf
需要这样的线
shared_preload_libraries = '$libdir/plugin_debugger.dll'
如果您有疑问,请搜索实际的 .dll。如果您使用的是 Linux,您要查找的文件是plugin_debugger.so
。不要忘记改变postgresql.conf
文件需要重新启动才能使更改生效。
PostgreSQL 数据库
假设您在 Linux 服务器上运行 PostgreSQL 数据库这个要点 https://gist.github.com/jhngrant/c1787346fcb4b0e3001a在解释如何下载依赖项以启用调试方面做得非常出色。安装时请确保您以 root 身份运行。
很容易错过的部分是针对要调试的实际数据库发出命令。对于 PostgreSQL 的较新版本,您需要做的就是:
CREATE EXTENSION IF NOT EXISTS pldbgapi;
如果没有返回错误,那么您应该可以开始了。
一些额外的注意事项:
- 如上所述,只有以超级用户帐户运行时才能进行调试
- From 他们的文档 http://www.pgadmin.org/docs/1.8/debugger.html您只能调试 pl/pgsql 函数。所以如果你的函数说类似的话
LANGUAGE c
当您选择该函数时,PGAdmin 甚至不会显示右键单击“调试”菜单选项。寻找有的东西LANGUAGE plpgsql
并且应该显示“调试”菜单。