Я пишу сценарий оболочки, который выполняет вызовы psql с использованием двух форм ... одна - командой (-c), другая - файлом (-f).
например psql -c "создать таблицу foo (целое число столбца)"
psql -f foobar.sql
Одно из различий между этими формами состоит в том, что вызов по команде (-c) возвращает ненулевой код выхода, если обнаружена ошибка, а вызов по файлу (-f) всегда, кажется, возвращает ноль.
Мне интересно, есть ли обходной путь для этого поведения? (т.е. вернуть ненулевое значение, если при выполнении файла произошла ошибка).
Спасибо.
Вы можете использовать приведенное ниже заявление.
psql -v ON_ERROR_STOP=1 -f foobar.sql
Это вернет правильный код возврата даже foobar.sql
файл не включает ON_ERROR_STOP
вверху файла.
Я узнал, как это решить.
Мне нужно включить ON_ERROR_STOP
вверху файла.
Пример:
\set ON_ERROR_STOP true