내 데이터베이스 레코드를 삭제할 수 없습니다 둘 다 내가 그들을 삭제할 수없는 레코드가 포함되어 있습니다! 나는이 일을하고내가이 두 테이블이
:
competition = competitor.competition
adjustment_query = DBSession.query(TargetAdjustment).filter(
TargetAdjustment.competitor_id == competitor.id_
).filter(
or_(
TargetAdjustment.start_date <= competition.start_date,
TargetAdjustment.start_date >= competition.end_date
)
)
# delete any extraneous adjustment data for this competitor
log.warning("before: {}".format(adjustment_query.count()))
adjustment_query.delete()
DBSession.flush()
log.warning("after: {}".format(adjustment_query.count()))
# delete any extraneous performance data for this competitor
DBSession.query(Performance).filter(
Performance.competitor_id == competitor.id_
).filter(
or_(
Performance.start_date <= competition.start_date,
Performance.end_date >= competition.end_date
)
).delete()
DBSession.flush()
내가 해당하는 'target_adjustments'기록을 삭제 하였는지, 로그 문이 보여 '공연'기록을 삭제하려고
,WARNI: before: 0
WARNI: after: 0
하지만 여전히이 오류가 발생합니다.
"IntegrityError: (IntegrityError) (1451, 'Cannot delete or update a parent row: a foreign key constraint fails (
target_adjustments
, CONSTRAINTtarget_adjustments_ibfk_1
FOREIGN KEY (competitor_id
,start_date
) REFERENCESperformances
(competitor_id
,start_date
))') 'DELETE FROM performances WHERE performances.competitor_id = %s AND (performances.start_date <= %s OR performances.end_date >= %s)' (1128L, datetime.datetime(2016, 3, 31, 23, 0), datetime.datetime(2016, 6, 1, 23, 0))"
왜 공연 기록을 삭제할 수 없습니까?
분명히 MySQL은 그렇지 않다고 생각합니다. 추측하는 대신 target_adjustments 테이블에 참조 데이터가 남아 있는지 실제로 확인할 수 있습니다. – Shadow
이 문제를 해결했지만 로그 메시지에 일치하는 레코드가 없다는 것을 알 수 있습니다. –