开发者社区 > PolarDB开源 > PolarDB 分布式版 > 正文

polardb中离线安装postgis后报这个错,请问这个怎么处理啊?

"polardb中离线安装postgis后报这个错,请问这个怎么处理啊?
6612ea70d7600a3cc4e7e195b88f3cf6.png
"

展开
收起
十一0204 2023-12-11 10:35:49 106 0
2 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    这个错误提示表明 PostgreSQL 在试图加载扩展模块 postgis-3.so 时失败了,原因是 libpq 和 libboost_date_time-mt-sol.53.0 两个共享对象文件不存在。

    针对这种情况,你需要首先确定这两个缺失的动态链接库文件在哪里。然后,你可以手动指定这些路径给 PostgreSQL,使其能够在启动时找到它们。

    以下是具体的解决方案:

    1. 找出缺少的动态链接库文件的位置

    假设你已经在系统上找到了丢失的两个动态链接库文件:libpq.so 和 libboost_date_time-mt-sol.53.0.so。现在我们需要告诉 PostgreSQL 它们的确切位置。

    1. 修改 postgresql.conf 配置文件

    打开位于 /etc/postgresql/your_postgres_version/main/pg_hba.conf 中的配置文件(这里 your_postgres_version 是你的 PostgreSQL 版本)。在这个文件里,你应该能看到类似下面的内容:

    listen_addresses = localhost;
    port = 5432;
    
    # Unix domain socket
    unix_socket_directories = '/run/user/1000';
    
    shared_preload_libraries = '';
    

    在这里,我们将 shared_preload_libraries 添加一个新的值,指向我们的动态链接库文件:

    shared_preload_libraries = 'postgis,pg_stat_statements';
    

    注意这里的 "postgis" 可能会因不同的 PostgreSQL 版本而有所不同;另外,别忘了用分号结束这一条指令。

    保存修改后的配置文件。

    1. 刷新 PostgreSQL 数据库

    重启 PostgreSQL 服务,以便应用新的配置更改:

    sudo systemctl restart postgresql.service
    

    这样应该就可以解决 PostgreSQL 不能加载 postgis-3.so 的问题了。不过请注意,这种方法仅适用于当前登录用户的主目录下存在这些动态链接库文件的情况下有效。否则,你可能还需要调整权限或复制这些文件至适当的目录。

    2023-12-12 17:42:45
    赞同 1 展开评论 打赏
  • 报错信息显示,PostgreSQL在尝试加载postgis-3.so库时无法找到所需的libboost_date_time-mt.so.1.53.0库。这通常意味着PostgreSQL或PostGIS安装过程中缺少一个依赖库或者该库的路径没有被正确地添加到系统的共享库路径(LD_LIBRARY_PATH)中。要解决这个问题,请尝试以下步骤:

    1. 检查并安装缺失的Boost库:

      • 确保已经安装了与PostGIS兼容的Boost库版本。在这个例子中,系统似乎需要的是libboost_date_time-mt.so.1.53.0
      • 如果还没有安装这个版本的Boost库,请通过包管理器(如apt、yum或zypper等)或者手动下载并编译源代码来安装它。
    2. 更新系统环境变量:

      • 确保PostgreSQL能够找到所需的Boost库文件,你需要将Boost库所在的目录添加到LD_LIBRARY_PATH环境变量中。
      • 在bash shell中,你可以使用以下命令来临时设置环境变量:
        export LD_LIBRARY_PATH=/path/to/boost/lib:$LD_LIBRARY_PATH
        
        请替换/path/to/boost/lib为实际的Boost库路径。
    3. 永久修改LD_LIBRARY_PATH:

      • 要让这个环境变量更改对所有用户和会话都生效,可以将其添加到系统的配置文件中,例如/etc/environment(对于Debian和Ubuntu),或者/etc/profile.d/myenv.sh(对于CentOS和RHEL)。
      • 编辑相应的文件,然后添加一行如下内容:
        LD_LIBRARY_PATH="/path/to/boost/lib:$LD_LIBRARY_PATH"
        
    4. 重启数据库服务:

      • 为了使更改生效,可能需要重启PostgreSQL服务。根据你的操作系统和安装方式,你可能需要运行类似于以下的命令:
        sudo systemctl restart postgresql.service
        # 或者
        sudo service postgresql restart
        

    完成上述步骤后,再次尝试在PostgreSQL中创建PostGIS扩展,看看问题是否已得到解决。如果问题仍然存在,可能需要进一步检查PostGIS和PostgreSQL的安装,确保所有的依赖项都已经满足,并且所有相关的库和头文件都在正确的路径下。
    image.png

    2023-12-11 10:57:17
    赞同 展开评论 打赏

PolarDB 分布式版 (PolarDB for Xscale,简称“PolarDB-X”) 是阿里云自主设计研发的高性能云原生分布式数据库产品,为用户提供高吞吐、大存储、低延时、易扩展和超高可用的云时代数据库服务。

相关电子书

更多
云栖大会:开源 PolarDB 架构演进、关键技术与社区建设 立即下载
2023云栖大会:和客户一起玩转PolarDB新特性 立即下载
2023云栖大会:PolarDB for AI 立即下载

相关镜像