【发布时间】:2021-11-23 01:22:14
【问题描述】:
也许我在这里遗漏了一些超级简单的东西,但我有一个 postgresql 数据库,它有几个这样的表:
- releases
|- releases_contributions
|- releases_primary contributions
|- recording
|- recording_contributions
|- recording_primary_contributions
其中releases_contributions、releases_primary_contributions 和recording 都有一个列,其外键与自动生成的releases_id 相关联。
我已经进行了修改以更新ondelete 参数:
op.alter_column('recording', 'releases_id', sa.ForeignKey('releases.releases_id', ondelete='CASCADE'))
op.alter_column('recording_contributions', 'recording_fk_id', sa.ForeignKey('recording.recording_id', ondelete='CASCADE'))
op.alter_column('recording_primary_contributions', 'recording_fk_id', sa.ForeignKey('recording.recording_id', ondelete='CASCADE'))
op.alter_column('releases_contributions', 'releases_fk_id', sa.ForeignKey('releases.releases_id', ondelete='CASCADE'))
op.alter_column('releases_primary_contributions', 'releases_fk_id', sa.ForeignKey('releases.releases_id', ondelete='CASCADE'))
当然,在我最初的 alembic 升级中,我有这个:
op.add_column('releases', 'releases_id', primary_key=True, autoincrement=True)
我正在尝试删除releases 中的一行
delete from releases where releases_id=1;
然后级联到其他表并删除任何具有该版本的行,因为它是外键。
但是每当我运行该命令时,我都会收到以下错误:
ERROR: update or delete on table "releases" violates foreign key constraint "releases_contributions_releases_fk_id_fkey" on table "releases_contributions"
DETAIL: Key (releases_id)=(1) is still referenced from table "releases_contributions".
我在这里错过了什么?
【问题讨论】:
-
-
不幸的是,这不是解决方案
标签: python postgresql alembic