1

我正在使用 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
4

2 回答 2

0

我的问题在 2020 年 9 月 30 日的最新 pg_repack 版本中得到解决。pg_repack 1.4.6。

这是我所做的:

  • 卸载/删除所有旧安装。
  • 安装了新版本的 pg_repack。-- sudo yum 安装 pg_repack12
  • 连接到数据库删除了现有的扩展并创建了一个新的。删除扩展 pg_repack ;创建扩展 pg_repack ;
  • 重新运行重新包装。这次我能够成功重新打包。
于 2020-10-08T18:40:31.040 回答
0

PostgreSQL v12 已经取消relhasoids了目录的列pg_class,因为在 v12 中不再存在这个概念。

您应该使用pg_repack 的1.4.5 或更高版本,其中添加了对 PostgreSQL v12 的支持。

于 2020-09-09T08:06:07.627 回答