错误:pg_repack 失败并出现错误:错误:列“relhasoids”不存在
Posted
技术标签:
【中文标题】错误:pg_repack 失败并出现错误:错误:列“relhasoids”不存在【英文标题】:ERROR: pg_repack failed with error: ERROR: column "relhasoids" does not exist 【发布时间】:2020-09-09 07:36:44 【问题描述】:我正在使用 pg_repack 扩展对我的数据库表执行完全真空。到目前为止,我使用的是 postgres-11。现在,我已将其升级到 postgres-12.4。 升级后,当我再次开始完全真空时 - 我收到以下错误:
ERROR: pg_repack failed with error: ERROR: column "relhasoids" does not exist
这里有详细介绍:
pg_repack -U postgres --no-order --no-kill-backend --table channatest shiwangini
ERROR: pg_repack failed with error: ERROR: column "relhasoids" does not exist
LINE 19: CASE WHEN relhasoids
^
QUERY:
SELECT array_to_string(array_agg(param), ', ')
FROM (
-- table storage parameter
SELECT unnest(reloptions) as param
FROM pg_
如何在 postgres -12 版本中避免这个问题?我已经尝试安装 pg_repack12 并且 pg_repack 版本 1.4.5 只安装在我的机器上,它支持 postgres -12。还是一样的错误。
/usr/pgsql-12/bin/pg_repack --version
pg_repack 1.4.5
【问题讨论】:
【参考方案1】:PostgreSQL v12 已经取消了 pg_class
目录的 relhasoids
列,因为在 v12 中不再存在不可靠的概念。
您应该使用 version 1.4.5 或更好的 pg_repack,其中添加了对 PostgreSQL v12 的支持。
【讨论】:
pg_repack 1.4.5 版仅安装在我的机器上。仍然遇到同样的问题。我正在用更多细节编辑我的问题 那就是没有正确安装。我查看了源代码,它在 v12 中将relhasoids
替换为 false
。也许您使用旧版本的 PosttgreSQL 运行 configure
。
我卸载了旧版本的 repack 并使用这个逗号安装了新版本:sudo yum install pg_repack12 ..还是同样的问题:(
奇怪。也许打开项目的问题。【参考方案2】:
2020 年 9 月 30 日最新的 pg_repack 版本修复了我的问题。pg_repack 1.4.6。
这是我所做的:
卸载/删除所有旧安装。 已安装新版本的 pg_repack。 -- sudo yum install pg_repack12 连接到数据库删除了现有扩展并创建了一个新扩展。 删除扩展 pg_repack ; 创建扩展 pg_repack ; 重新运行重新打包。这次我能够成功重新打包。【讨论】:
以上是关于错误:pg_repack 失败并出现错误:错误:列“relhasoids”不存在的主要内容,如果未能解决你的问题,请参考以下文章
将大型数据集从 Redshift 卸载到 S3 失败并出现 I/O 错误