postgresql 오류: current transaction is aborted commands ignored until end of transaction block
1865 단어 PostgreSQLerror
발생한 상황
Transaction 중에 행 잠금을 구현했을 때 발생한 오류입니다.
다음 행 검색 오류를 기대했습니다.
pq: could not obtain lock on row in relation "table_xxxx"
↑는 「행 락 되고 있기 때문에, 취득할 수 없어요~」라고 하는 것.
pq: current transaction is aborted, commands ignored until end of transaction block
그러나 의도에 반하여 ↑의 메시지가 발생했습니다. 즉, "현재 트랜잭션을 중단합니다. 명령은 트랜잭션 블록이 끝날 때까지 무시됩니다."라는 오류가 발생하기 시작했습니다.
처리의 전체도
좀 더 자세히
실은, 행 락 취득 에러를 훅해, 같은 트랜잭션(transaction)내에서 다른 처리를 행하려고 하고 있을 때 발생하고 있습니다.
오류가 발생하는 프로세스의 전체 다이어그램
원칙적으로 postgres 트랜잭션에서 오류가 발생한 후 다른 쿼리를 실행하려면 롤백을 사용하여 트랜잭션을 지워야 한다는 것이었습니다. 트랜잭션에 에러를 방치해 버리면 모든 처리는 실행되지 않는다고 하는 것입니다(이번은 이것에 상당하고 있습니다).
에러 훅은 원래 동일 트랜잭션으로는 할 수 없다고 하는 것이군요.
롤백이란?
ROLLBACK은 현재 트랜잭션을 롤백하고 트랜잭션에 의해 수행된 모든 업데이트를 삭제합니다. (Description: ROLLBACK)
해결 방법
트랜잭션내에서 에러를 훅해 별처리등을 실시할 수 없기 때문에, 반드시 에러 발생 후에는 롤백해 트랜잭션을 클린인 상태로 하면 발생하지 않게 됩니다.
문서 또한 트랜잭션 중 오류에 대해 언급합니다.
트랜잭션은 모든 데이터베이스 시스템에서 기본적인 개념입니다. 트랜잭션의 기본 요점은 여러 단계를 단일 "모든 카나시카"작업으로 결합하는 것입니다. 절차 진행 중 상태는 다른 움직이는 트랜잭션에서 볼 수 없습니다. 그리고 어떤 오류가 발생하면 트랜잭션이 완료되지 않습니다. 따라서 데이터베이스는 오류의 원인이 된 절차에 의해 전혀 영향을받지 않습니다.
Reference
이 문제에 관하여(postgresql 오류: current transaction is aborted commands ignored until end of transaction block), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mikankitten/items/8667bd3cbd95c7886b8c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
pq: could not obtain lock on row in relation "table_xxxx"
pq: current transaction is aborted, commands ignored until end of transaction block
실은, 행 락 취득 에러를 훅해, 같은 트랜잭션(transaction)내에서 다른 처리를 행하려고 하고 있을 때 발생하고 있습니다.
오류가 발생하는 프로세스의 전체 다이어그램
원칙적으로 postgres 트랜잭션에서 오류가 발생한 후 다른 쿼리를 실행하려면 롤백을 사용하여 트랜잭션을 지워야 한다는 것이었습니다. 트랜잭션에 에러를 방치해 버리면 모든 처리는 실행되지 않는다고 하는 것입니다(이번은 이것에 상당하고 있습니다).
에러 훅은 원래 동일 트랜잭션으로는 할 수 없다고 하는 것이군요.
롤백이란?
ROLLBACK은 현재 트랜잭션을 롤백하고 트랜잭션에 의해 수행된 모든 업데이트를 삭제합니다. (Description: ROLLBACK)
해결 방법
트랜잭션내에서 에러를 훅해 별처리등을 실시할 수 없기 때문에, 반드시 에러 발생 후에는 롤백해 트랜잭션을 클린인 상태로 하면 발생하지 않게 됩니다.
문서 또한 트랜잭션 중 오류에 대해 언급합니다.
트랜잭션은 모든 데이터베이스 시스템에서 기본적인 개념입니다. 트랜잭션의 기본 요점은 여러 단계를 단일 "모든 카나시카"작업으로 결합하는 것입니다. 절차 진행 중 상태는 다른 움직이는 트랜잭션에서 볼 수 없습니다. 그리고 어떤 오류가 발생하면 트랜잭션이 완료되지 않습니다. 따라서 데이터베이스는 오류의 원인이 된 절차에 의해 전혀 영향을받지 않습니다.
Reference
이 문제에 관하여(postgresql 오류: current transaction is aborted commands ignored until end of transaction block), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mikankitten/items/8667bd3cbd95c7886b8c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(postgresql 오류: current transaction is aborted commands ignored until end of transaction block), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mikankitten/items/8667bd3cbd95c7886b8c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)