我正在使用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 v12已经取消了pg_class
目录的relhasoids
列,因为v12中不再存在取消投递的概念。
您应该使用pg_repack的1.4.5或更高版本,其中添加了对PostgreSQL v12的支持。
我的问题在2020年9月30日最新发布的pg_repack中得到了解决。第1.4.6页。
以下是我所做的:
- 卸载/删除所有旧安装
- 已安装新版本的pg_repack。--sudo yum-install pg_repack12
- 连接到数据库删除了现有扩展并创建了一个新扩展。删除扩展pg_repack;创建扩展pg_repack
- 重新运行重新包装。这一次我能够成功地重新包装