我正在尝试使用"DROP TABLE"
命令删除一些表,但是由于未知的原因,该程序只是“坐下”而不删除要在数据库中存储的表。
我在数据库中有3个表:
产品,账单和账单_产品,用于在账单中引用产品。
我设法删除/删除产品,但是对bill和Bill_Products却无法做到相同。
我正在发出相同的"DROP TABLE Bill CASCADE;"
命令,但是命令行停滞了。我还使用了不带CASCADE
选项的简单版本。
您知道为什么会这样吗?
更新:
我一直在想数据库有可能保留从产品到账单的一些引用,也许这就是为什么它不会删除账单表的原因。
因此,就此而言,我发出了一个简单的SELECT * from Bill_Products
,并在几(10-15)秒后(奇怪的是,因为在有一个空表时,它持续如此长时间并不正常,这很正常),它打印了该表它的内容,没有。 (因此,显然“产品”中没有对Bill的引用)。
最佳答案
什么是输出
SELECT *
FROM pg_locks l
JOIN pg_class t ON l.relation = t.oid AND t.relkind = 'r'
WHERE t.relname = 'Bill';
可能还有其他 session 在并行使用您的表,而您无法获得Access Exclusive锁来删除它。
关于python - PostgreSQL DROP TABLE不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10317114/