PostgreSQL扩展版本显示不一致:oracle_fdw的实际使用版本以哪项查询结果为准?
关于oracle_fdw版本显示不一致的解答
这事儿我碰到过好多次,核心是这两个命令获取版本的逻辑完全不一样:
用
\dx看到的版本,是存在PostgreSQL系统表pg_extension里的扩展元数据版本。这个版本是你当初执行CREATE EXTENSION oracle_fdw时写入的,如果你之后升级了oracle_fdw的二进制文件,但没执行ALTER EXTENSION oracle_fdw UPDATE;同步元数据,这里就会停留在旧版本(也就是你看到的1.1)。而
SELECT oracle_diag('oraclegwserver');返回的版本,是当前运行时加载的oracle_fdw共享库的实际版本。这个版本是编译在库文件里的,代表你现在真正在使用的oracle_fdw版本,也就是2.0.0,这个是绝对准确的。
验证并修复版本显示不一致的方法
你可以执行这条命令来同步元数据:
ALTER EXTENSION oracle_fdw UPDATE;
执行完成后再运行\dx,应该就会显示2.0.0,和oracle_diag的结果一致了。
另外,你也可以直接检查服务器上的oracle_fdw共享库文件(通常在PostgreSQL的lib目录下,比如$PGHOME/lib/oracle_fdw.so),用strings oracle_fdw.so | grep "oracle_fdw version"这类命令,也能看到实际的版本号,结果肯定和oracle_diag返回的一致。
总结一下:当前实际使用的是2.0.0版本,\dx显示的1.1只是未更新的旧元数据而已。
内容的提问来源于stack exchange,提问作者Vik
相关产品推荐
相关产品推荐

