Назад | Перейти на главную страницу

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

Я пишу сценарий оболочки, который выполняет вызовы 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