Postgres: ненулевой код завершения при выполнении файла sql?


34

Я пишу сценарий оболочки, который делает вызовы psql, используя 2 формы ... одна по команде (-c), другая по файлу (-f).

например, psql -c "создать таблицу foo (целое число в строке)"

psql -f foobar.sql

Одно из различий между этими формами состоит в том, что вызов по команде (-c) возвращает ненулевой код выхода, если обнаружена ошибка, в то время как вызов по файлу (-f) всегда возвращает ноль.

Мне интересно, есть ли обходной путь для этого поведения? (т.е. вернуть ненулевое значение, если при выполнении файла произошла ошибка).

Спасибо.

Ответы:


37

Вы можете использовать ниже заявление.

psql -v ON_ERROR_STOP=1 -f foobar.sql

Это вернет правильный код возврата, даже если foobar.sqlфайл не включен ON_ERROR_STOPв верхней части файла.


21

Я узнал, как решить эту проблему.

Мне нужно включить ON_ERROR_STOPв верхней части файла.

Пример:

\set ON_ERROR_STOP true

+1 за просмотр man-
страницы

+1 за лучшее решение, потому что оно позволяет мне установить переменную в скрипте, поэтому я могу доверять, что она всегда работает правильно и не должна беспокоиться о контексте времени выполнения.
Брэндон
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.