错误: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”不存在的主要内容,如果未能解决你的问题,请参考以下文章

使用 pyspark 重新分区失败并出现错误

将大型数据集从 Redshift 卸载到 S3 失败并出现 I/O 错误

AVAudioPlayer 失败并出现错误“无法完成操作。(OSStatus 错误 2003334207。)”

构建失败并出现错误错误代码 72 命令:xcrun

获取请求失败并出现错误:连接 ECONNREFUSED

FBSDKLoginManager 失败并出现错误代码 - 308