2014-07-14 2 views
1

해당 메시지로 시작하는 항목이 많았지 만 문제와 관련된 항목을 찾을 수 없습니다.SQLSTATE [HY000] : doctrine2의 일반 오류 및 오류가 발생하지 않았습니다.

"SQLSTATE [HY000] : General error"오류 메시지와 함께 예외를 작성하는 코드는 다음과 같습니다. 내 문제는 : 나는 "일반 오류"를 제외하고 아무것도 없다. 사실, 오류가 없습니다. 삭제하려는 행은 올바르게 알 수있는 한 올바르게 삭제됩니다. phpMyAdmin에서 쿼리를 사용하면 오류가 없습니다. 나는 everthing이 괜찮은 것처럼 보이는 동안이 오류가 발생하는 이유를 알고 싶습니다.

public function deleteAllUnused() { 
    try { 
     $rsm = new ResultSetMappingBuilder($this->getEntityManager()); 
     $rsm->addRootEntityFromClassMetadata("\Entity\CataloguePrixDetailProduit", "cpdp"); 
     $sqlRequest = $this->buildDeleteAllUnusedRequest(); 
     return $this->getEntityManager() 
       ->createNativeQuery($sqlRequest, $rsm) 
       ->execute(); 
    } catch (Exception $exc) { 
     throw new Exception($exc->getMessage()); 
    } 
} 

private function buildDeleteAllUnusedRequest() { 
    return 
    "DELETE cpdp.*\n" 
    . "FROM CataloguePrixDetailProduit cpdp JOIN (\n" 
     . "SELECT cpdp2.idCataloguePrixDetailProduit\n" 
     . "FROM CataloguePrixDetailProduit cpdp2\n" 
     . "WHERE cpdp2.idCataloguePrixDetailProduit NOT IN (\n" 
      . "SELECT DISTINCT(cpdp3.idCataloguePrixDetailProduit)\n" 
      . "FROM CataloguePrixDetailProduit cpdp3\n" 
      . "INNER JOIN CatalogueExploitantFournisseur cef ON cpdp3.idCatalogueExploitantFournisseur = cef.idCatalogueExploitantFournisseur\n" 
      . "INNER JOIN CatalogueExploitant ce ON cef.idCatalogueExploitant = ce.idCatalogueExploitant\n" 
      . "INNER JOIN DetailProduitCommandeServiceValide dpcsv \n" 
       . "ON dpcsv.idDetailProduit = cpdp3.idDetailProduit\n" 
       . "AND dpcsv.idFournisseur = cef.idFournisseur\n" 
       . "AND dpcsv.idExploitant = ce.idExploitant\n" 
     . ")\n" 
    . ") r ON r.idCataloguePrixDetailProduit = cpdp.idCataloguePrixDetailProduit"; 
} 

무엇이 잘못되었는지 이해하지 못합니다. 아무 이유없이 오류 메시지를 보내는 응용 프로그램을 보관할 수 없습니다.

편집

: 당신의 시간을

[10:02:38][Repository\CataloguePrixDetailProduitRepository][deleteAllUnused] : SQLSTATE[HY000]: General error 

#0 C:\xampp\htdocs\projects\Sogesa\applications\SogesaWeb\library\DoctrineOrm\Doctrine\ORM\Internal\Hydration\ObjectHydrator.php(148): PDOStatement->fetch(2) 
#1 C:\xampp\htdocs\projects\Sogesa\applications\SogesaWeb\library\DoctrineOrm\Doctrine\ORM\Internal\Hydration\AbstractHydrator.php(111): Doctrine\ORM\Internal\Hydration\ObjectHydrator->hydrateAllData() 
#2 C:\xampp\htdocs\projects\Sogesa\applications\SogesaWeb\library\DoctrineOrm\Doctrine\ORM\AbstractQuery.php(747): Doctrine\ORM\Internal\Hydration\AbstractHydrator->hydrateAll(Object(Doctrine\DBAL\Driver\PDOStatement), Object(Doctrine\ORM\Query\ResultSetMappingBuilder), Array) 
#3 C:\xampp\htdocs\projects\Sogesa\applications\SogesaWeb\model\Repository\CataloguePrixDetailProduitRepository.php(107): Doctrine\ORM\AbstractQuery->execute() 
#4 C:\xampp\htdocs\projects\Sogesa\applications\SogesaWeb\controller\CataloguePrixDetailProduitController.php(196): Repository\CataloguePrixDetailProduitRepository->deleteAllUnused() 
#5 C:\xampp\htdocs\projects\Sogesa\applications\SogesaWeb\library\Dispatcher.php(60): CataloguePrixDetailProduitController->ajaxLoadedFlushPrixUnused() 
#6 C:\xampp\htdocs\projects\Sogesa\applications\SogesaWeb\library\Dispatcher.php(11): Dispatcher->callAction(Object(CataloguePrixDetailProduitController)) 
#7 C:\xampp\htdocs\projects\Sogesa\applications\SogesaWeb\webroot\index.php(21): Dispatcher->__construct() 
#8 {main} 

감사 : 여기 는 예외 스택입니다.

+0

오류가 발생한 정확한 줄이 맞습니까? 코드에서 반환 값을 더 사용하고 있습니까? -이 오류 메시지의 한 가지 가능한 원인은 선택 결과 집합 (예 : $ result-> fetchAll())에서만 작동하는 함수에서 업데이트/삭제 (비 선택) 쿼리의 결과가 사용된다는 것입니다. 이 질문도 참조하십시오 : http://stackoverflow.com/questions/20315898/pdo-error-pdoexception-with-message-sqlstatehy000-general-error?rq=1 – cypherabe

+0

예외 인 경우 여기에 메시지가 있습니다. 그것을 잡아서 스택 추적을 덤프하여 어디에서 발생했는지 알 수 있습니다. 일반적으로 예외를 다시 던지는 대신'deleteAllUnused'에있는'catch '는'echo $ exc-> getMessage()와 같은 일을해야합니다. "\ n \ n" $ exc-> getTraceAsString(); die;'(단, 이것을 디버깅 할 때만,'echo; die;를 계속 사용하지 마십시오!) –

+0

@cypherabe : yes 100 % 확신합니다. 예외를 시작합니다. – Mortagus

답변

1
To Fix this general issue use DQL statement 
createQuery Instead of using createNativeQuery 

난은 createNativeQuery()를 사용하여 하나 삭제 쿼리를 실행하려고하지만,이 link을 읽고 우리가 createQuery로 변경할 때이 오류에 직면했다 그리고 그것은 나를 위해 일했습니다.

+0

이유를 설명해 주시겠습니까? – Marki555

+1

createNativeQuery를 사용하여 삭제 쿼리를 실행하려고 시도했지만이 [link] (http://www.doctrine-project.org/jira/browse/DDC-962)를 읽은 후 createQuery로 변경하면이 오류가 발생했습니다. 나를 위해 일했다. – rocky

+1

좋습니다. 그렇기 때문에 답변 자체의 이유를 언급하고 댓글에서했던 것처럼 자세한 정보를 보려면 해당 문서에 링크해야합니다. 그럼 대답은 좋은 품질의 것입니다 upvotes을 받게됩니다 ... – Marki555

관련 문제