【问题标题】:ERROR: pg_repack failed with error: ERROR: column "relhasoids" does not exist错误:pg_repack 失败并出现错误:错误:列“relhasoids”不存在
【发布时间】: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

【问题讨论】:

    标签: postgresql pg-repack


    【解决方案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 ;
    • 重新运行重新打包。这次我能够成功重新打包。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-24
      • 2013-11-05
      • 2016-03-12
      • 1970-01-01
      • 2021-09-25
      • 2014-11-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多