해당 메시지로 시작하는 항목이 많았지 만 문제와 관련된 항목을 찾을 수 없습니다.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}
감사 : 여기 는 예외 스택입니다.
오류가 발생한 정확한 줄이 맞습니까? 코드에서 반환 값을 더 사용하고 있습니까? -이 오류 메시지의 한 가지 가능한 원인은 선택 결과 집합 (예 : $ result-> fetchAll())에서만 작동하는 함수에서 업데이트/삭제 (비 선택) 쿼리의 결과가 사용된다는 것입니다. 이 질문도 참조하십시오 : http://stackoverflow.com/questions/20315898/pdo-error-pdoexception-with-message-sqlstatehy000-general-error?rq=1 – cypherabe
예외 인 경우 여기에 메시지가 있습니다. 그것을 잡아서 스택 추적을 덤프하여 어디에서 발생했는지 알 수 있습니다. 일반적으로 예외를 다시 던지는 대신'deleteAllUnused'에있는'catch '는'echo $ exc-> getMessage()와 같은 일을해야합니다. "\ n \ n" $ exc-> getTraceAsString(); die;'(단, 이것을 디버깅 할 때만,'echo; die;를 계속 사용하지 마십시오!) –
@cypherabe : yes 100 % 확신합니다. 예외를 시작합니다. – Mortagus