2012-08-17 23 views
3

我試圖在觸發函數中調試時發生錯誤。在Postgres的記錄,我有以下幾點:匹配日誌文件中的行號到函數的代碼

2012-08-16 21:41:23 PDT ERROR: Unknown period: D 
2012-08-16 21:41:23 PDT CONTEXT: PL/pgSQL function "handle_promotion_update" 
    line 60 at assignment 
SQL statement "UPDATE promotion SET some_column = foo + 1 
    WHERE id = NEW.promotion_id" 
PL/pgSQL function "handle_new_reward" line 94 at SQL statement 

所以,好像我的問題可能開始於「第60行」

我的問題,是你的行號開始在哪裏?如果我使用pgAdmin並查看函數聲明,那麼它在頂部具有「助手」(如刪除函數)。所以,我不認爲它是從那裏。但是,它是否包含函數聲明?還是隻是從BEGIN的行?

回答

2

您在PostgreSQL服務器日誌中看到的行號從函數體的開頭引號開始。您必須先添加行才能到達pgAdmin SQL編輯器中的絕對行號。

不要誤會:如果有錯誤,而試圖去創造你得到不同的行號的功能:他們指的是執行腳本作爲一個整體,而在運行時錯誤行號指的是函數體。

+0

嗨Erwin ...在這裏跟進。我是否正確地認爲「開盤報價」是第一行?這是一個基於1的編號。正確? – 2013-12-04 18:42:58

+0

@DavidS:是的,這是我的理解。 9.3中的快速測試證實了...... – 2013-12-04 18:52:00

+0

@ErwinBrandstetter,「開放報價」是什麼意思?我從來沒有見過「在我的函數開始之前 – danjuggler 2015-11-16 16:38:13