gpt4 book ai didi

django - 如何查看导致 Django 迁移错误的 SQL 查询?

转载 作者:行者123 更新时间:2023-11-29 11:25:31 25 4
gpt4 key购买 nike

我正在尝试运行删除表中所有行的数据迁移(例如,MyModel)。还有另一个表指向该表 (RelatedModel)。 RelatedModel 中映射到 MyModel 的字段具有 on_delete=models.SET_NULL。但是,当我运行迁移时,我得到:

  File "/usr/local/lib/python2.7/site-packages/django/db/backends/base/base.py", line 211, in _commit
return self.connection.commit()
IntegrityError: update or delete on table "MyModel" violates foreign key constraint "f2274d6f2be82bbff458f3e5487b1864" on table "RelatedModel"
DETAIL: Key (uuid)=(ywKMUYx7G2RoK9vqqEWZPV) is still referenced from table "RelatedModel".

我在迁移中添加了一个断点并检查了 SQL DELETE 查询。我在 shell 中以交互方式运行它们并且它们在事务内部工作,但是当它尝试提交时迁移仍然中断。但是我看不到是哪个查询导致了这个错误,所以我不知道如何调试它。有什么建议么?谢谢。

PS:我使用的是 Django 1.9.13、Python 2.7、PostgreSQL 10.4。

最佳答案

您可以使用以下管理命令为特定迁移打印 SQL 语句。

python manage.py sqlmigrate <app label> <migration_name to print sql for>

对于一个实例,如果你想检查 hello 的迁移应用程序在你的 django 项目中,假设你想为 0001_initial.py 打印 sql 语句.比你需要执行以下行。

python manage.py sqlmigrate hello 0001_initial.py

它将打印将在迁移时执行的 SQL 定义(语句)。

关于django - 如何查看导致 Django 迁移错误的 SQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53758481/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com