【问题标题】:plpgsql: raise notice output shows only in pgAdminplpgsql:提高通知输出仅在 pgAdmin 中显示
【发布时间】:2015-06-16 20:48:02
【问题描述】:

postgresql 9.4。我有一个功能

CREATE OR REPLACE FUNCTION test(source_ text)
  RETURNS text AS
$BODY$
  DECLARE
  BEGIN
   raise debug '%s', source_;
   return source_ || ' processed';
  END
  $BODY$
  LANGUAGE plpgsql STABLE
  COST 100;
ALTER FUNCTION test()
  OWNER TO test;

select * from test('input');

我只能看到来自 pgAmin 的通知,但没有来自 ide 或 toad(以及其他一些)数据库客户端的通知。 如何打开“raise notice”的输出,或者是否有其他方法可以获取调试信息?

更新

我找到了一个解决方法:tail -F 用于日志文件并在 postgresql.conf 中设置 log_min_messages

【问题讨论】:

  • How can I turn on output of "raise notice" ... 但是你没有使用raise notice,你使用的是raise debug
  • 好的,这是一个错误。但它可以是任何消息。 pgAdmin 在“消息”选项卡上显示它们,但其他客户端没有,或者我找不到它们。

标签: postgresql plpgsql


【解决方案1】:

你需要调整client_min_messages,比如:

set client_min_messages = 'debug';

请参阅http://www.postgresql.org/docs/9.1/static/runtime-config-logging.html#GUC-CLIENT-MIN-MESSAGES 了解更多信息。

test=# create or replace function test() returns int as $$
begin
  raise debug 'foo';
  return 1;
end
$$ language plpgsql immutable;
CREATE FUNCTION
test=# select test();
 test 
------
    1
(1 row)

test=# set client_min_messages = 'debug';
SET
test=# select test();
DEBUG:  foo
 test 
------
    1
(1 row)

test=# 

【讨论】:

  • 谢谢。在 psql 中工作并且需要在每次连接之前执行。 pgAdmin 显示消息,但即使我设置了 client_min_messages,“toad”、“navicat”和其他一些也不会显示。
  • @jNess:这些客户端需要在执行语句后主动检索消息。由于这是特定于 DBMS,我假设那些多 DBMS 工具不会这样做。
  • 谢谢!在 psql 11 上工作!
猜你喜欢
  • 2017-06-18
  • 1970-01-01
  • 1970-01-01
  • 2021-03-23
  • 2017-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多