I am writing a shell script which makes calls to psql using 2 forms... one is by command (-c), the other is by file (-f).

e.g. psql -c "create table foo (bar integer)"

psql -f foobar.sql

One difference between these forms is that a call by command (-c) returns a non-zero exit code if an error is encountered, while a call by file (-f) always seems to return zero.

I'm wondering if there is a workaround for this behaviour? (i.e. return non-zero if an error occurs while executing a file).

Thanks.

link|improve this question
feedback

2 Answers

up vote 3 down vote accepted

I found out how to resolve this.

I need to enable ON_ERROR_STOP at the top of the file.

Example:

\set ON_ERROR_STOP true
link|improve this answer
+1 for looking at the manpage :) – Server Horror Jun 9 '09 at 18:54
feedback

You can use below statement. ^^

psql -v ON_ERROR_STOP=1 -f foobar.sql

This will return the correct return code even foobar.sql file doesn't enable ON_ERROR_STOP at the top of the file.

link|improve this answer
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.