Symfony 교리를 해결하는 방법 : Build-Schema Error (알 수없는 관계 별칭 table_name)
문제
이 Symfony 오류를 해결하는 방법 :
C:\inetpub\wwwroot\project\trunk\preprod\signup>php symfony doctrine:build-schema --trace
>> doctrine generating yaml schema from database
[sfException]
Unknown relation alias table_name
Exception trace:
at C:\inetpub\wwwroot\project\trunk\preprod\signup\lib\vendor\symfony\lib\plugins\sfDoctrinePlugin\lib\cli\sfDoctrineCli.class.php:69
sfDoctrineCli->notifyException at C:\inetpub\wwwroot\ project\trunk\preprod\signup\lib\vendor\symfony\lib\plugins\sfDoctrinePlugin\lib\ven
dor\doctrine\Doctrine\Cli.php:93
Doctrine_Cli->run at C:\inetpub\wwwroot\project\trunk\preprod\signup\lib\vendor\symfony\lib\plugins\sfDoctrinePlugin\lib\task\sfDoctrineB
aseTask.class.php:112
sfDoctrineBaseTask->callDoctrineCli at C:\inetpub\wwwroot\project\trunk\preprod\signup\lib\vendor\symfony\lib\plugins\sfDoctrinePlugin\li
b\task\sfDoctrineBuildSchemaTask.class.php:57
sfDoctrineBuildSchemaTask->execute at C:\inetpub\wwwroot\project\trunk\preprod\signup\lib\vendor\symfony\lib\task\sfBaseTask.class.php:63
sfBaseTask->doRun at C:\inetpub\wwwroot\project\trunk\preprod\signup\lib\vendor\symfony\lib\task\sfTask.class.php:77
sfTask->runFromCLI at C:\inetpub\wwwroot\ project\trunk\preprod\signup\lib\vendor\symfony\lib\command\sfSymfonyCommandApplication.class.ph
p:76
sfSymfonyCommandApplication->run at C:\inetpub\wwwroot\project\trunk\preprod\signup\lib\vendor\symfony\lib\command\cli.php:20
include at C:\inetpub\wwwroot\project\trunk\preprod\signup\symfony:14
해결책
모델 및 캐시 문제입니다 (모든 구성 재설정 및 모델 및 데이터 파일을 지우기)
rm config/doctrine/schema.yml
rm -r cache/*
rm -r data/*
rm -r lib/model/doctrine/base
symfony cc
Builder.php 패치를 사용하여 Symfony 1.2에서 교리 대상 getters 가이 오류를 시전하도록 두 번째 응답을 찾았습니다.
다른 팁
Symfony 1.4와 함께 일하는 사람들은 구식 교리 모델을 청소하는 작업이 있다는 것을 알게되어 기쁩니다. "./symfony 교리 : 깨끗한"불쾌한 "이 모델은 더 이상 문제가 존재하지 않는다".
테이블 중 하나가 'table_name'이라는 다른 테이블을 참조하는 것으로 보입니다 (교리의 오류 출력 대체에 끔찍한 문제가없는 한). 모든 테이블의 관계를 확인 하여이 문제를 일으키는 범인을 찾아 관계를 제거하고 (실제로 'table_name'이라는 테이블이 있습니까?)이 문제를 해결하십시오.
테이블이 많으면 전체 데이터베이스를 임시 테스트 DB로 복제 한 다음 테이블의 절반을 떨어 뜨려 생성 명령을 다시 실행할 수 있습니다. 오류가 발생하지 않으면 테이블 청크가 문제가되지 않으므로 기존 테이블을 떨어 뜨리고 나머지 절반을 복원하십시오. 동일한 오류가 여전히 발생하면 범인은 이제 현재 청크 내에 있습니다. 하나의 테이블 만 오류가 발생할 때까지 반쪽을 계속 떨어 뜨리면 오류 소스를 찾을 수 있습니다.
문제의 정확한 원인을 찾는 데 여전히 문제가있는 경우 SQL에서 문제 테이블의 구조와 작업중 인 교리 버전을 제공 할 수 있습니다.