Jehna :)

PDO 에러 There is already an active transaction in.. 본문

윌리/DB

PDO 에러 There is already an active transaction in..

Jehna 2022. 12. 8. 15:07

PDO로 UPDATE 쿼리 실행 시, There is already an active transaction in.. 와 같은 오류가 발생하는 경우가 있다.

 

* 보통은 업데이트 할 column의 values값이 잘 못 전달되거나 column수와 values 수가 다를 경우 발생하지만

   transaction 문제가 있는 경우에도 위와 같은 오류가 발생할 수 있다.

 

 

< transaction 에러 발생 환경 > 

한번에 쿼리가 여러번 실행될 때, transaction도 여러번 실행되는 환경

 

< 에러 발생 원인>

하나의 transaction이 끝나기도 전에 다른 transaction이 호출되면서 과부하가 걸려 

DB에서 자체적으로 막아버림

 

<해결 방법>

1. 쿼리 준비 전, beginTransaction() 실행 

2. 실행할 모든 쿼리 준비 후  pdo의 prepare() 와 execute() 진행

3. 한번에 commit() 진행

 

개발 환경에 따라 코드가 달라질 수 있어 

예제 코드는 따로 준비하지 않았다.

(환경이 달라도 해결 방법은 비슷하다고 생각되어 글로 간단하게 적음)