我试图用"DROP TABLE"
命令删除一些表,但是由于一个未知的原因,程序只是“坐着”不删除我希望它在数据库中的表。
数据库中有3个表:
产品、票据和票据产品,用于引用票据中的产品。
我设法删除/删除了产品,但无法对bill和bill_产品执行相同的操作。
我发出了相同的"DROP TABLE Bill CASCADE;"
命令,但命令行只是暂停。我还使用了不带CASCADE
选项的简单版本。
你知道为什么会这样吗?
更新:
我一直在想,数据库可能会保留一些从产品到账单的引用,也许这就是为什么它不会删除账单表。
所以,对于这个问题,我发布了一个简单的SELECT * from Bill_Products
,在几秒钟(奇怪的是,因为我认为当有空表的时候持续这么长时间是不正常的)之后,它打印出了表和它的内容,它们都不是。(因此,显然,产品与账单之间没有任何关系)。
所以我在墙上撞了几个小时试图解决同样的问题,下面是对我有效的解决方案:
检查PostgreSQL是否有未提交或回滚的挂起准备事务:
如果得到结果,则对于每个事务,必须从有问题的数据库中执行一个回滚:
有关详细信息,请click here。
就这么做
然后通过
其中1234是查询结果中的实际pid。
您可以像这样将其全部管道化(这样就不必手动复制粘贴每个pid):
什么是输出
可能有其他会话并行使用您的表,您无法获取Access Exclusive锁来删除它。
相关问题 更多 >
编程相关推荐