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 :)
serverhorror

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