2015-06-16 32 views
0

postgresql 9.4。我有一個函數plpgsql:提高通知輸出只顯示在pgAdmin

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或蟾蜍(和其他一些)DB客戶端。 如何打開「引發通知」的輸出或者有其他方式獲取調試信息?

UPDATE

我找到了一個解決辦法:尾巴-F一個日誌文件,並設置log_min_messages postgresql.conf中

+0

'我如何打開「raise notice」的輸出......'但是您沒有使用'raise notice',您正在使用'raise debug'。 –

+0

好的,那是一個錯誤。但它可以是任何消息。 pgAdmin在標籤'messages'中顯示它們,但其他客戶端不顯示,或者我找不到它們。 – jNess

回答

3

您需要調整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=# 
+0

謝謝。在psql中工作,並且需要在每次連接之前執行。 pgAdmin顯示消息,但「蟾蜍」,「navicat」和其他一些,即使我設置client_min_messages。 – jNess

+1

@jNess:那些客戶端需要在語句執行後主動檢索消息。由於這是DBMS特有的,我假設那些多DBMS工具不這樣做。 –