Как вызвать ошибку из скрипта, вызванного из psql -f my_script.sql - PullRequest
1 голос
/ 18 марта 2019

Я делаю следующее в сценарии SQL, который я вызываю, делая psql -f my_script.sql:

select not exists(select 1 from pg_class where relname='my_table') as my_table_not_exists
\gset
\if :my_table_not_exists
    -- raise error
\endif

Как я могу вернуть код состояния, отличный от 0, и написать table 'table_name' doesn't exist в stderr?

Ответы [ 2 ]

0 голосов
/ 18 марта 2019

Вы можете установить на ON_ERROR_STOP

\set ON_ERROR_STOP on
select * from Table Name; 
\unset ON_ERROR_STOP

Пожалуйста, обратитесь это

0 голосов
/ 18 марта 2019

Вы можете установить ON_ERROR_STOP, а затем использовать таблицу, после чего вы получите сообщение об ошибке, и обработка прекратится:

\set ON_ERROR_STOP on
SELECT * FROM my_table WHERE FALSE;

Вы можете вывести произвольное сообщение на стандартный вывод:

\! echo 'Hello!' 1>&2

Но нет выхода из psql с ненулевым кодом возврата, кроме как вызвать ошибку базы данных.

Возможно, вам следует использовать bash-скрипт с psql совместным процессом для более сложной обработки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...