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;
첫 번째 오류 이후에 실제로 모든 것을 건너뛰고 오류 전에 수행한 모든 것을 롤백합니다.
저는 항상 매뉴얼을 직접 참조하는 것을 좋아합니다.
종료 상태
psql은 정상적으로 완료되면 0을 셸로 반환하고, 1은 자체적으로 치명적인 오류가 발생하면(예: 메모리 부족, 파일을 찾을 수 없음), 2는 서버에 대한 연결이 잘못되어 세션이 상호 작용하지 않는 경우, 3은 스크립트에서 오류가 발생하여 변수 ON_ERROR_STOP이 설정된 경우 반환합니다.
Postgre에서 실행 중인 SQL 코드의 경우 기본적으로SQL Server 오류 psql은 오류를 종료하지 않습니다.오류가 발견되고 계속됩니다.위에서 언급한 바와 같이, 다음과 같이 설정한 경우ON_ERROR_STOP
on으로 설정, psql이 sql 코드에서 오류를 감지하면 종료되고 반환됩니다.3
껍질째의
언급URL : https://stackoverflow.com/questions/4480381/how-can-i-stop-a-postgres-script-when-it-encounters-an-error
'programing' 카테고리의 다른 글
문자열 배열에 문자열을 추가하는 방법은 무엇입니까?없습니다.함수 추가 (0) | 2023.05.14 |
---|---|
iOS Simulator에서 네트워크 호출을 모니터링하는 방법 (0) | 2023.05.14 |
에서 구조체의 기본 생성자를 정의할 수 없는 이유는 무엇입니까?NET? (0) | 2023.05.14 |
Git Cherry-pick vs 병합 워크플로우 (0) | 2023.05.14 |
"instantiated"와 "initialized"의 차이는 무엇입니까? (0) | 2023.05.14 |