Database
Postgres:執行sql文件時非零退出程式碼?
我正在編寫一個使用 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