运行AGE的PG installcheck时报错:不支持WITH OIDS声明的表,如何解决?
解决AGE扩展installcheck时的"tables declared WITH OIDS are not supported"错误
核心原因
PostgreSQL 12及以上版本默认禁用了WITH OIDS建表语法,且移除了系统表OID的默认生成逻辑。你遇到的问题是当前使用的AGE版本与PostgreSQL版本不兼容,或编译AGE时未适配高版本PG的特性。
具体解决步骤
1. 版本兼容性校验
先确认AGE和PostgreSQL的版本匹配:
- 查看PostgreSQL版本:
~/age_project/postgres/bin/postgres --version - 查看AGE版本/提交记录:
cd ~/new-age/age && git log --oneline -n 1
注意:AGE 1.1.0及以上版本才支持PostgreSQL 12-15,旧版AGE仅支持到PG 11。如果版本不匹配,要么升级AGE,要么降级PostgreSQL。
2. 重新编译并安装AGE(适配高版本PG)
如果AGE版本本身支持当前PG,先清理旧编译产物,重新编译:
cd ~/new-age/age make clean # 用对应PG的pg_config编译,强制使用PGXS框架 make PG_CONFIG=~/age_project/postgres/bin/pg_config USE_PGXS=1 make PG_CONFIG=~/age_project/postgres/bin/pg_config install
3. 手动移除AGE源码中的WITH OIDS(备选方案)
如果上述步骤无效,可直接修改AGE源码中使用WITH OIDS的部分:
- 找到AGE源码中所有包含
WITH OIDS的SQL文件(比如src/age--*.sql系列文件) - 删除所有
WITH OIDS关键字,保存后重新编译安装
4. 清理临时实例,重新运行installcheck
先清理之前生成的临时测试实例,避免残留问题:
rm -rf ~/new-age/age/regress/instance
再重新执行测试命令:
make PG_CONFIG=~/age_project/postgres/bin/pg_config installcheck
内容的提问来源于stack exchange,提问作者Marcos Silva
相关产品推荐
相关产品推荐

