2013-04-09 4 views
2

enitiy (판매)에서 속성 (티저)을 삭제했습니다. 나는 데이터베이스 & entites 업데이트 CLI를 사용 :Symfony2 : 쿼리에서 여전히 사용중인 삭제 된 속성

$ php app/console doctrine:schema:update --complete --force 
$ php app/console doctrine:generate:entities Our --no-backup 
$ php app/console doctrine:cache:clear-metadata 
$ php app/console doctrine:cache:clear-result 

을 그리고 난 캐시 삭제 :

$qb = $this->createQueryBuilder('s'); 
$q = $qb 
    ->select('s.id') 
    ->leftJoin('s.bills','b') 
    ->where('b.paid = true') 
    ->getQuery() 
    ->getResult(); 

이 : 지금이 쿼리 빌더에 의해 생성 된 쿼리

$ php app/console cache:clear --no-optional-warmers --no-warmup 

을 이전 속성을 포함하는 select 문을 생성하기 때문에 오류가 발생합니다.

Column not found: 1054 Unknown column 's0_.teaser' in 'field list' 

Doctrine이 쿼리를 실행하는 방법을 이해하려고 시도했지만 문제의 원인을 찾지 못했습니다. 누군가 단서가 있습니까?

업데이트 : 쿼리에서 DQL을 가져 와서 querybuilder에서 생성 한 다음 새 쿼리를 만드는 데 사용했습니다. 같은 오류. 그렇다면 DQL에서 한 단어를 대문자에서 소문자로 바 꾸었습니다 (왼쪽입니다. 왼쪽).

$q = $this->getEntityManager() 
->createQuery('SELECT s,b FROM Our\BuyBundle\Entity\Sale s Left JOIN s.bills b WHERE s.id IN (:randomIds)') 
->setParameter('randomIds', $allSaleIds); 

DQL 문은 어딘가에 캐시되어 있으므로 DQL을 해시로 사용하여 해당 SQL 문을 가져 오는 것 같습니다. 나는 캐시 된 정보를 어디에서 어떻게 지우는 지 아직 확실히 알 수 없습니다. 특히 사실 나는 app/cache 폴더의 모든 내용을 삭제했다.

업데이트 2 : 해결책을 찾았습니다. 콘솔이 그렇게 할 수 없기 때문에 수동으로 APC 캐시를 지워야했습니다.

$ php app/console doctrine:cache:clear-query 

을 그리고 문제가 해결되지 않을 경우, 귀하의 APC 캐시를 지우 : 그래서 솔루션이 될 것입니다.

+1

당신은'app/console cache : clear --evn = prod'을 실행 했습니까? 또한'rm -rf app/cache/*'를 시도하십시오 –

+0

예, 모든 환경에서 캐시를 삭제했습니다. 그 엔티티를 사용하는 모든 querybuilder querys에서 오류가 발생합니다. –

+1

문제가있는 검색어가 맞습니까? 누구나 알고있는 모든 프로젝트's.teaser'에서 검색해보십시오. –

답변

2

문제점이 APC 캐시였습니다.

나는 CLI에서 쿼리 캐시 (응용 프로그램/콘솔) 이후 콘솔 수 없습니다 취소 할 수 없습니다 (또는 허용되지 않음) APC 캐시를 취소합니다. 그래서 APC 캐시를 수동으로 삭제해야했습니다.

$ php app/console doctrine:cache:clear-result 

그리고 문제가 해결되지 않을 경우, 분명히 APC 캐시 수동 (이든 캐시 당신은 사용) :

솔루션입니다.

관련 문제