programing

Postgres 스크립트에서 오류가 발생할 경우 어떻게 중지할 수 있습니까?

newstyles 2023. 5. 14. 10:27

Postgres 스크립트에서 오류가 발생할 경우 어떻게 중지할 수 있습니까?

SQL 스크립트를 실행할 때 스크립트에서 첫 번째 오류가 발생하면 중지하도록 지정할 수 있는 방법이 있습니까? 이전 오류와 상관없이 일반적으로 계속됩니다.

.psqlrc에 다음을 추가하는 솔루션은 완벽과는 거리가 멀다고 생각합니다.

\set ON_ERROR_STOP on

psql을 매개 변수와 함께 사용하는 훨씬 더 간단하고 편리한 방법이 있습니다.

psql -v ON_ERROR_STOP=1

사용하기에도 더 좋습니다.-X.psqlrc 파일 사용을 끄는 매개 변수입니다.완벽하게 작동합니다.

p.s. 피터 아이젠트라우트의 훌륭한 게시물에서 발견된 해결책.감사합니다, 피터! http://petereisentraut.blogspot.com/2010/03/running-sql-scripts-with-psql.html

사용 중인 것 같습니다.psql이것은 당신에게 추가하기에 편리할 수 있습니다.~/.psqlrc파일.

\set ON_ERROR_STOP on

이렇게 하면 첫 번째 오류 시 중단됩니다.만약 당신이 그것을 가지고 있지 않다면, 그것은 당신의 스크립트를 계속 실행하지만 당신의 스크립트가 끝날 때까지 모든 것에 실패할 것입니다.

그리고 당신은 아마도 Paul이 말한 것처럼 거래를 사용하기를 원할 것입니다.이것도 할 수 있습니다.psql --single-transaction ...스크립트를 변경하고 싶지 않은 경우.

다음은 .psqlrc에 ON_ERROR_STOP이 포함된 완전한 예입니다.

psql --single-transaction --file /your/script.sql

원하는 것은 아니지만 스크립트를 시작할 때begin transaction;그리고 끝은end transaction;첫 번째 오류 이후에 실제로 모든 것을 건너뛰고 오류 전에 수행한 모든 것을 롤백합니다.

저는 항상 매뉴얼을 직접 참조하는 것을 좋아합니다.

포스트그레에서SQL 설명서:

종료 상태

psql은 정상적으로 완료되면 0을 셸로 반환하고, 1은 자체적으로 치명적인 오류가 발생하면(예: 메모리 부족, 파일을 찾을 수 없음), 2는 서버에 대한 연결이 잘못되어 세션이 상호 작용하지 않는 경우, 3은 스크립트에서 오류가 발생하여 변수 ON_ERROR_STOP이 설정된 경우 반환합니다.

Postgre에서 실행 중인 SQL 코드의 경우 기본적으로SQL Server 오류 psql은 오류를 종료하지 않습니다.오류가 발견되고 계속됩니다.위에서 언급한 바와 같이, 다음과 같이 설정한 경우ON_ERROR_STOPon으로 설정, psql이 sql 코드에서 오류를 감지하면 종료되고 반환됩니다.3껍질째의

언급URL : https://stackoverflow.com/questions/4480381/how-can-i-stop-a-postgres-script-when-it-encounters-an-error