私のデータベースレコードを削除することはできませんどちらも私はそれらを削除することはできませんレコードを含む!は、私はこの2つのテーブルを持っている
私は、このやっている:
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()
私は「パフォーマンス」レコードを削除しようとすると、ログ・ステートメントが
WARNI: before: 0
WARNI: after: 0
、私は同等の「target_adjustments」レコードを削除したことを証明している。しかし、私を依然としてこのエラーが発生します。
"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
これを対処しました。ログメッセージには、一致するレコードがないことが示されています。 –