Ubuntu环境下PlJava扩展加载失败:undefined symbol: GetMemoryChunkContext求解
解决Ubuntu环境下PlJava扩展加载报错:undefined symbol: GetMemoryChunkContext
问题核心
这个报错源于PlJava版本与PostgreSQL 14的内部API不兼容,GetMemoryChunkContext是PostgreSQL的内部函数,PlJava 1.6.7未适配PG14的API变动。
具体解决步骤
升级PlJava到兼容PG14的版本
PlJava 1.6.x系列对PG14的支持不完善,建议升级到1.7.0及以上版本,这些版本明确适配PostgreSQL 14。确保构建时正确关联PG14开发环境
- 安装PG14的开发依赖包:
sudo apt install postgresql-server-dev-14 - 明确指定PG14的配置文件路径:
export PG_CONFIG=/usr/lib/postgresql/14/bin/pg_config - 清理旧构建缓存并重新编译安装:
make clean make sudo make install
- 安装PG14的开发依赖包:
检查库依赖是否正确
使用ldd命令验证PlJava库依赖的PostgreSQL版本:ldd /usr/lib/postgresql/14/lib/libpljava-so-1.6.7.so若发现链接到其他版本的PG库,需在构建时指定PG14的库路径:
LDFLAGS="-L/usr/lib/postgresql/14/lib" make使用预编译包替代手动构建
若手动编译遇到问题,直接下载适配PG14的PlJava预编译二进制包,替换现有/usr/lib/postgresql/14/lib/下的相关文件,之后重启PostgreSQL服务:sudo systemctl restart postgresql@14-main再执行
CREATE EXTENSION pljava;完成安装。
内容的提问来源于stack exchange,提问作者Bruce Bai
相关产品推荐
相关产品推荐

