Database

Postgres:執行sql文件時非零退出程式碼?

  • June 27, 2012

我正在編寫一個使用 2 種形式呼叫 psql 的 shell 腳本……一種是通過命令(-c),另一種是通過文件(-f)。

例如 psql -c “create table foo (bar integer)”

psql -f foobar.sql

這些形式之間的一個區別是,如果遇到錯誤,命令呼叫 (-c) 返回非零退出程式碼,而文件呼叫 (-f) 似乎總是返回零。

我想知道這種行為是否有解決方法?(即,如果在執行文件時發生錯誤,則返回非零值)。

謝謝。

我發現瞭如何解決這個問題。

我需要ON_ERROR_STOP在文件頂部啟用。

例子:

\set ON_ERROR_STOP true

您可以使用以下語句。

psql -v ON_ERROR_STOP=1 -f foobar.sql

即使文件在文件頂部foobar.sql未啟用,這也會返回正確的返回碼。ON_ERROR_STOP

引用自:https://serverfault.com/questions/22833