postgresql - 带有 where 子句“COLUMN_1 为空”的 PostgreSQL 选择查询挂起
问题描述
最近我们从备份中恢复了 PostgreSQL 数据库,该备份是在没有停止数据库的情况下创建的(我知道这是非常错误的,现在我们正在付出代价)。备份是简单的数据库目录备份。现在我们注意到,当我们执行
select *
from table
where COLUMN_1 is null
在我们的一张表中查询,查询只是挂起(冻结)并且永远不会完成。同一张表上的其他查询运行良好并distinct(COLUMN_1)
返回所有值。同一查询在另一列上正确运行COLUMN_2 is null
。那一栏似乎有问题。
我该如何修理这种可能损坏的桌子?
解决方案
转储整个数据库pg_dump
并将其还原到新集群。如果可行,它将消除所有数据损坏。
如果失败,您应该聘请专家。
如果您使用调试器附加到挂起的后端,您可以调查它在做什么(如果您熟悉源代码)。
推荐阅读
- c - 如何为进程间通信创建一个全局窗口?
- database - 如何解决 RSA 解密中的错误“'System.Security.Cryptography.CryptographicException' Bad Data”
- ubuntu - 如何从 ubuntu 18.04 中删除和清除 lam mpi
- batch-file - 你如何制作一个打开一个exe但也“点击”该exe中的运行按钮的批处理文件?
- sql - 使用表达式更改框颜色
- c++ - 模板结构的多个声明,用于获取枚举,描述模板类型
- python - Django - 可以将酥脆的表格分成 2 列吗?
- laravel - 我想用故事的分页显示标签的所有标签和故事
- latex - 有没有办法强制整页图像出现在您将它们放在 tex 文件中的位置
- authentication - 从 servlet 访问 FileNet 内容引擎