2014-04-09 4 views
3

현재 커다란 기존 데이터베이스를 "교리 (doctrinizing)"하는 중입니다. 이 프로세스는 매우 잘 작동하고 있으며 이전 원시 쿼리 코드를 엔티티 및 DQL로 천천히 대체 할 수 있습니다.Doctrine migration diff가 테이블을 삭제하지 못하게합니다.

우리는 최근 Doctrine Migrations 프로젝트가 데이터베이스의 변경 사항을 관리하기에 가장 적합한 후보로 보이는 것을 발견했습니다. 우리는 그러나 약간의 장애에 부딪쳤다.

우리의 데이터베이스는 상당히 크기 때문에 우리는 우리의 애플리케이션을 조금씩 리펙토링하고 있습니다. 현재 엔티티로 표시된 데이터베이스의 약 40 %가 있습니다. 문제는 부분적으로 변환 된 데이터베이스에서 "diff"를 실행하면 해당 테이블에 엔티티가 없으므로 diff가 전체 테이블을 삭제하려고한다는 것입니다. 직접 diff를 편집 할 수는 있지만 상당히 복잡하고 오류가 발생할 가능성이 커집니다.

질문은; diff를 생성하고 엔티티가 존재하지 않는 테이블을 삭제하지 않도록 diff 프로세스에 지시 할 수 있습니까?

답변

4

당신이 Symfony2로 작업하는 경우 여기에 설명처럼, 당신은 단지 구성을 추가 할 수 있습니다 http://symfony.com/doc/current/bundles/DoctrineMigrationsBundle/index.html#manual-tables 당 명령에 기초

당신이 좋아, DIFF를 차지해야하는 테이블에 대한 정규식을 지정할 수 있습니다

app/console doctrine:migrations:diff --filter-expression=/^t_/ 

(이름이 t_으로 시작하고 다른 테이블을 무시하는 경우에만 diff가 생성됩니다.)