2015-01-22 2 views
1

Propel 1.6.9에서 실행 중이며 이전 노트북에서 적절한 파일을 생성하는 데 문제가 있으므로 이전 개발자가 최근에 파일을 업데이트했습니다. 무언가를 삭제하려고 할 때 한 가지 문제를 제외하고 모두 잘 진행되었습니다.무결성 제약 조건 위반으로 Propel을 삭제할 수 없습니다.

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails (`db000_app/file_meta`, CONSTRAINT `file_meta_FK_1` FOREIGN KEY (`case_id`) REFERENCES `agency_costs` (`id`))' in /var/www/vhosts/10/154462/webspace/httpdocs/domain/vendor/propel/propel1/runtime/lib/connection/DebugPDOStatement.php:90 

Stack trace: 
#0 /var/www/vhosts/10/154462/webspace/httpdocs/domain/vendor/propel/propel1/runtime/lib/connection/DebugPDOStatement.php(90): PDOStatement->execute(NULL) 
#1 /var/www/vhosts/10/154462/webspace/httpdocs/domain/vendor/propel/propel1/runtime/lib/util/BasePeer.php(145): DebugPDOStatement->execute() 
#2 /var/www/vhosts/10/154462/webspace/httpdocs/domain/vendor/propel/propel1/build/classes/onterechtbetaald/om/BaseAgencyCostsPeer.php(1085): BasePeer::doDelete(Object(AgencyCostsQuery), Object(DebugPDO)) 
#3 [internal function]: BaseAgencyCo in /var/www/vhosts/10/154462/webspace/httpdocs/domain/vendor/propel/propel1/runtime/lib/util/BasePeer.php on line 149 

삭제 함수를 호출하는 코드 :

$case = AgencyCostsQuery::create()->findPk($_POST["DeleteId"]); 

if ($case !== null) 
{ 
    $case->deleteFiles(); 
    $case->delete(); 
} 

으로는이 파일이 업데이트되기 전에 잘 작동했다. 데이터베이스가 변경되었습니다. agency_costs에 두 개의 열이 추가되었습니다.

이 오류를 극복하는 방법에 대한 아이디어가 있으십니까?

+0

정확히 어떤 문제가 있을지 모르지만 삭제되는 하위 행이있는 동안 일부 상위 레코드가 삭제되는 것 같습니다. 어쩌면 당신의 관계를 확인해보십시오, 그 중 하나가 위반되고 있습니다 –

+0

Propel의 삭제 기능도 관계를 처리하기로되어 있다고 생각합니다. 추가 된 테이블이 없으며 테이블에 두 개의 새로운 열만 추가되었습니다. 따라서 관계는 변경되지 않았습니다. – Casper

답변

-1

데이터베이스의 제약 조건 정의로 인해 문제가 발생했습니다. 제한 사항이 삭제 및 업데이트시 제한되도록 설정되었습니다. 이것을 계단식으로 변경하면 문제가 해결되었습니다.

+0

해결책은 무엇입니까? – Imran

관련 문제