"버퍼링되지 않은 다른 쿼리가 활성 상태인 동안 쿼리를 실행할 수 없습니다." 오류의 원인 이해
MySQL에서는 클라이언트 프로토콜이 다중 실행을 제한합니다. 버퍼링되지 않은 하나 이상의 쿼리가 부분 결과를 요청할 때 동시에 쿼리합니다. 이전 쿼리에서 여전히 데이터가 생성되는 동안 두 번째 쿼리를 실행하려고 하면 "버퍼링되지 않은 다른 쿼리가 활성화되어 있는 동안 쿼리를 실행할 수 없습니다." 오류가 발생합니다.
문제의 근본
메모리 사용을 최적화하기 위해 MySQL 클라이언트 라이브러리는 일반적으로 초기 쿼리의 모든 결과를 내부적으로 검색하여 서버 커서를 순차적으로 가져오고 해제할 수 있습니다. 그러나 쿼리가 완전히 가져오지 않으면 MySQL 서버가 "활성 커서" 상태를 유지하기 때문에 후속 쿼리에서 오류가 발생합니다.
PDO::ATTR_EMULATE_PREPARES의 영향
설정 PDO::ATTR_EMULATE_PREPARES를 false로 설정하면 자동 쿼리 버퍼링이 비활성화됩니다. 즉, 가져온 결과는 MySQL 서버를 직접 사용합니다. 결과적으로 초기 쿼리에서 가져오지 않은 결과가 지속되면 앞서 언급한 오류가 발생할 수 있습니다.
오류 해결 방법
추가 고려 사항
위 내용은 MySQL에서 \"버퍼링되지 않은 다른 쿼리가 활성 상태인 동안 쿼리를 실행할 수 없습니다\" 오류를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!