PHP 스크립트에서 PDO가 처리하는 쿼리가 있습니다. 정확히 말하면 1 문장에서 2 개의 쿼리입니다. 쿼리 자체는 SQL 클라이언트에서 잘 실행됩니다 (저는 HeidiSQL을 사용하고 있습니다). PHP는 그러나 나에게 정확히이 오류를 준다 : "SQLSTATE [HY000] : 일반 오류"과 함께. 오류 번호 또는 메시지가 없습니다."SQLSTATE [HY000] : 일반 오류"- 하나의 명령문에 여러 SQL 쿼리가 있습니다.
어떻게 든 쿼리를 디버깅 할 수 있습니까? 나는 쿼리 자체에 에러가 있다고 생각하지 않는다. 그래서 나는 틀린 것을 모른다. mysql 에러 로그에는 아무것도 나타나지 않습니다. mysql 일반 로그를 사용하도록 설정했지만 오류를 표시하지 않고 쿼리 자체 만 기록합니다.
내 스택 : 이것은 내 쿼리입니다 5.5.27
XAMPP 1.8, 아파치 2.4.3, PHP 5.4.7, MySQL은 (오히려 길다) :
/*First query - generating temp table with overdue jobs*/
CREATE TEMPORARY TABLE temp AS (
SELECT j.NetworkID,
@clientID := j.ClientID,
j.BranchID,
j.ServiceProviderID,
(
(DATEDIFF(CURDATE(), j.DateBooked))
-
IF(
(@unit := (
SELECT uctype.UnitTurnaroundTime
FROM job
LEFT JOIN product ON job.ProductID = product.ProductID
LEFT JOIN unit_type AS utype ON product.UnitTypeID = utype.UnitTypeID
LEFT JOIN unit_client_type AS uctype
ON utype.UnitTypeID = uctype.UnitTypeID
AND uctype.ClientID = @clientID
WHERE job.JobID = j.JobID
)
) IS NOT NULL, /*statement*/
@unit, /*TRUE - Client Unit Type has turnaround time assigned in the db*/
IF( /*FALSE - Now checking if Client Default Turnaround Time is set*/
(@clnt := (
SELECT DefaultTurnaroundTime AS dtt
FROM client
WHERE client.ClientID = @clientID
)
) IS NOT NULL, /*statement*/
@clnt, /*TRUE - Client Default Turaround time is set*/
( /*FALSE - falling back to general default*/
SELECT gen.Default
FROM general_default AS gen
WHERE gen.GeneralDefaultID = 1
)
)
)
) AS overdue
FROM job AS j
HAVING overdue > 0
);
/*Second query - filtering out overdue jobs with specific time range*/
SELECT COUNT(*) AS number
FROM temp
WHERE overdue >= :from AND overdue <= :to AND overdue != 0
UPDATE : 문제는 한 명령문에서 여러 쿼리를 실행하지 못하게하는 PDO가 원인 인 것 같습니다. 나는 실행 쿼리하기 전에이를 삽입 한 :
$conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0);
는 이제 "일반 오류가"사라,하지만 난 PDO는 단지 하나 개의 쿼리를 실행하는 것을 의미 단지 첫 번째 쿼리 후
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax
받고 있어요 계속하기를 거부합니다 ...
도움이 될 수 있습니다. http://stackoverflow.com/questions/6346674/pdo-support-for-multiple-queries-pdo-mysql-pdo-mysqlnd –
http://stackoverflow.com/questions/10199571/why- sqlstatehy000 - 일반 오류가 아직 해결되지 않았습니다 – Drew
아직 해결하지 못했습니다. 두 게시물을 모두 읽으십시오 ... – Caballero