epgsql 的錯誤訊息

我使用 Will 的 epgsql : http://github.com/wg/epgsql

操作 epgsql 時,若遇到錯誤,它只會給你 {error, Reason} ,而且這個 Reason 是個很簡單的描述。

例如,無法登入 postgres ,就得到 {error,invalid_authorization_specification} :「反正授權不合要求」,到底在講什麼?

這是合理的,理由是,一來因為系統的錯誤只需要由系統工程師進去看細節,而不需要將太細節的東西傳遞出來,二來因為造成系統無法運作的錯誤都須被排除,所以以系統運作的期間而言,資料庫正常連線的次數比較多。

此時,去看 src/pgsql_connection.erl 的 auth/2 倒數第二句函數定義,如下:

auth({error, E}, State) ->
    case E#error.code of
        <<"28000">> -> Why = invalid_authorization_specification;
        <<"28P01">> -> Why = invalid_password;
        Any -> Why = Any
    end,

修改成

auth({error, E}, State) ->
io:fwrite("~p~n", [E]),
    case E#error.code of
        <<"28000">> -> Why = invalid_authorization_specification;
        <<"28P01">> -> Why = invalid_password;
        Any -> Why = Any
    end,

即可看到詳細的錯誤資訊。

廣告

About 黃耀賢 (Yau-Hsien Huang)

熱愛 Erlang ,並且有相關工作經驗。喜歡程式語言。喜歡邏輯。目前用 Python 工作。
本篇發表於 Erlang, Web Programming 並標籤為 。將永久鏈結加入書籤。

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s