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 인스턴스의 어트리뷰트로 설정했는데 일단 한글이 작동하지 않았고, 여러가지 문제가많이 생기더군요…
삽질기 끝….