问题描述
我正在使用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和仅在支持postgres -12的机器上安装pg_repack版本1.4.5。还是一样的错误。
/usr/pgsql-12/bin/pg_repack --version
pg_repack 1.4.5
解决方法
PostgreSQL v12取消了relhasoids
目录中的pg_class
列,因为在v12中不再存在这种令人讨厌的概念。
您应该使用pg_repack的version 1.4.5或更高版本,其中已添加了对PostgreSQL v12的支持。
,我的问题已在2020年9月30日最新的pg_repack版本中解决。pg_repack 1.4.6。
这是我所做的:
- 卸载/删除所有旧的安装。
- 安装了新版本的pg_repack。 -sudo yum install pg_repack12
- 已连接到数据库删除了现有扩展,并创建了一个新扩展。 下降扩展pg_repack; 创建扩展名pg_repack;
- 重新运行重新包装。这次我能够成功地重新打包。