【问题标题】:How to debug postgresql stored procedures?如何调试 postgresql 存储过程?
【发布时间】:2013-11-25 10:56:46
【问题描述】:

我意识到没有什么类似于 SQL Server Management Studio 的,所以我有心理准备使用好旧的 printf 调试。

唯一的问题是如何从存储过程中执行“printf”?

【问题讨论】:

标签: postgresql debugging stored-procedures


【解决方案1】:

要“打印”一条消息,您可以在 PL/pgSQL 函数中使用 raise notice
http://www.postgresql.org/docs/current/static/plpgsql-errors-and-messages.html

请注意,客户端必须将“client_min_messages”的值设置为适当的级别才能接收“通知”。

pgAdmin 有一个函数调试器:http://www.pgadmin.org/docs/1.18/debugger.html

(但我从未使用过它,因为我不使用 pgAdmin)。

【讨论】:

    【解决方案2】:

    听起来您正在寻找实际的调试功能。 PostgreSQL 实际上是从PostgreSQL 8.3 开始引入这个功能的。

    这太棒了,完全让 PostgreSQL 不辜负它的标语“世界上最先进的开源数据库”。跑步有点麻烦,但these links 可能会帮助您入门。一旦启用,它允许您通过 PGAdmin 中的一个方便的右键单击菜单设置断点或定义输入和评估函数。

    【讨论】:

    • 您知道是否可以评估或找出未声明的 var 值?就像从一个选择进入...
    【解决方案3】:

    除了可靠的 ol' RAISE 命令外,还有一些我听说过的 3rd-party 工具,虽然我从未使用过。

    【讨论】:

    • Postgres Plus Advanced Server 似乎是一个非常酷的东西,但它对我来说超出了范围,因为它需要购买许可证,而且该许可证对个人来说相当昂贵。
    【解决方案4】:

    PGAdmin 有一个调试器:我在 ubuntu 环境中使用 Postgres 12 进行了尝试,它对我有用:

    1. 安装这个包

      apt-get install postgresql-12-pldebugger

    2. 在程序所在的数据库中运行此命令

      创建扩展 pldbgapi;

    3. 在您的 Postgresql 安装文件夹中,准确地在数据文件夹中更改 postgresql.conf 文件中的此参数

      shared_preload_libraries = 'plugin_debugger'

    注意:进行此更改后,您需要重新启动 Postgres

    1. 在 pgAdmin 中右键单击架构中过程列表中的过程,输入参数值并选择调试

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-05
      • 2011-11-28
      • 2014-11-24
      • 2020-01-24
      • 1970-01-01
      • 1970-01-01
      • 2021-09-02
      • 1970-01-01
      相关资源
      最近更新 更多