PHP 에러, Cannot execute queries while other unbuffered queries are active.

PHP-PDO, mySQL에 대한 이야기 입니다. -ㅅ-)

프로젝트를 다른서버로 이전 작업도중에 다음과 같은 오류를 겪게 되었습니다.

PDOException: SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute.

열심히 구글링 해본결과 … 특별히 해결법을 찾을수가 없었네요…

다만 반복적인 쿼리를 2번이상할 때, 발생하는 것으로 확인했습니다.

전 서버에서는 무리 없이 잘되었는데…. (핑게 핑게..ㅋㅋ )

개발할 때 ORM에서 쿼리를 블럭 단위로 사용하게 되는데 insert하기전에 타임존을 설정하는 쿼리가 반복되어 생기는 문제였습니다. -_-;

SET time_zone='GMT';
  INSERT INTO
    `tr_clas_attend`
  (`cls_idx`, ~ 생략 ~ 

뿐만 아니라 set names utf8; 도 마찬가지더군요….

쿼리 시작시 한번만 적용하도록 수정하여 잘 해결되었습니다.

환경이 바뀌면 시스템이 잘못되었다고 생각할 때가 있는데, 하나하나 되집어보는 습관을 들여야 할 거 같네요…

무엇보다 개발할때, 전체를 생각하면서 개발해야하는데, 부분적인 것만 보고 개발해서 그랬던거 같습니다. -ㅅ-)

해결 과정중에 PDO::MYSQL_ATTR_USE_BUFFERED_QUERY 요놈을 PDO 인스턴스의 어트리뷰트로 설정했는데 일단 한글이 작동하지 않았고, 여러가지 문제가많이 생기더군요…

삽질기 끝….

Leave a Reply

Your email address will not be published. Required fields are marked *