Postgresql

pg_cron 擴展的“連接失敗”錯誤

  • August 11, 2021

已安裝pg_cron和計劃的作業,但由於作業未完成且cron.job_run_details表顯示connection failed錯誤消息而出現連接錯誤。

正如醫生所說:

重要提示:在內部,pg_cron 使用 libpq 打開到本地數據庫的新連接。對於執行 cron 作業的使用者,可能需要在 pg_hba.conf 中為來自 localhost 的連接啟用信任身份驗證。或者,您可以將密碼添加到 .pgpass 文件中,libpq 在打開連接時將使用該文件。

創建.pgpass了帶有所需參數的文件,但不確定如何“告訴”libpq 對於這個使用者、這個主機和數據庫讀取這個.pgpass文件。

任何幫助表示讚賞。

我可能有.pgpass錯誤的權限或錯誤的位置(正如@PhilW 建議的那樣),但我發現完全不同的方式對我有用(順便說一句,我剛剛刪除了.pgpass文件)。

解決方案只是更改cron.job.nodename為空字元串:

UPDATE cron.job SET nodename = '';

來源:https ://github.com/citusdata/pg_cron/issues/48

不知道如何“告訴”libpq 對於這個使用者,對於這個主機和數據庫讀取這個 .pgpass 文件。

你不需要。

當“擁有”它的帳戶執行任何需要密碼的 postgres 程序時,始終會讀取.pgpass 文件。

該所有權由文件的位置(即在帳戶的主目錄中)和權限(僅對所有者的讀/寫)決定。

該文件包含主機、數據庫、使用者名等以及用於每個組合的密碼。當所有其他“位”與請求的內容匹配時,Postgres 將提取並使用找到的密碼。

The Docs,該文件包含:

hostname:port:database:username:password

因此,對於您的 HOST、DB 和 USER,您將擁有更多類似的內容:

HOST:5432:DB:USER:password

引用自:https://dba.stackexchange.com/questions/297882