python - 有时无法使用 Django 删除 Oracle 数据库行

标签 python django oracle

我有一个单元测试,其中包含以下代码行

Site.objects.get(name="UnitTest").delete()

到目前为止,这一切都运行良好。然而,该声明目前悬而未决。它会永远坐在那里尝试执行删除。如果我只是说

print Site.objects.get(name="UnitTest")

然后它就可以工作了,所以我知道它可以检索该站点。没有其他程序连接到 Oracle,因此不会有两个开发人员以某种方式互相干扰。我假设某种表锁尚未释放。

如果无法关闭 Oracle 数据库并将其恢复,我该如何释放该锁或任何阻止我的东西?我不想诉诸数据库关闭,因为将来这可能会对其他一些开发人员造成干扰。

编辑:Justin 建议我查看 DBA_BLOCKERSDBA_WAITERS 表。不幸的是,我根本不理解这些表格,而且我不确定我在寻找什么。以下是与我相关的信息:

DBA_WAITERS 表有 182 个锁类型为“DML”的条目。 DBA_BLOCKERS 表有 14 个条目,其 session ID 均对应于我们的应用程序代码使用的用户名。

由于这个问题需要得到解决,我将重新启动网络服务器,但如果这个问题再次出现,我仍然希望收到有关如何处理的任何建议。在 Oracle 管理方面,我确实是个新手,而且过去大多只使用过 MySQL,所以我绝对不习惯。

编辑#2:事实证明,不管我怎么想,另一个程序员确实在与我同时访问数据库。那么将来检测到这一点的最佳方法是什么?也许我应该关闭程序,然后查询 DBA_WAITERSDBA_BLOCKERS 表以确保它们为空。

最佳答案

您可以在单独的 session 中查询 DBA_BLOCKERS 和 DBA_WAITERS 数据字典表并发布结果吗?这将告诉您您的 session 是否被其他 session 持有的锁阻塞,以及其他 session 持有该锁。

关于python - 有时无法使用 Django 删除 Oracle 数据库行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/205136/

相关文章:

python - Python 中的概率模拟

python - 正确替换 python3 中的 QString().arg 方法

django - 永远不会调用 Django 管理界面中字段的只读方法

python - Django项目中的导入错误: No module named simple while running manage. py测试

sql - 旋转日期以获得层次结构中节点总和的汇总

oracle - 如何在 Oracle Fusion 中使用 BI Publisher 查询不活跃的员工?

python - 在 [ :index] 上使用动态索引列出切片

python - 通过某个 "type"(属性)的最新记录提高QuerySet过滤器的效率

sql - 将复杂的 Oracle PL/SQL 游标逻辑封装为 View 的最佳方法?

python - django-import-export - 从 JSON 文件导入 ManyToMany