【问题标题】:Postgresql-8.4: undefined symbol: pallocPostgresql-8.4:未定义符号:palloc
【发布时间】:2015-12-19 19:57:55
【问题描述】:

我正在尝试建立一个数据库并且必须创建一个函数:

create or replace function uuid() returns uuid as 'moss_uuidgen', 'moss_uuidgen' language 'C' strict;

每次执行 postgre 时都会告诉我 .so 文件中有一个未定义的符号,名为 palloc 我知道这个版本的 Postgresql 已经过时了,但它似乎是唯一适用于我的项目的版本。有谁知道为什么 postgre 似乎不知道palloc

moss=# create or replace function uuid() returns uuid as 'moss_uuidgen',
moss-# 'moss_uuidgen' language 'C' strict;
FEHLER:  konnte Bibliothek »/usr/lib/postgresql/8.4/lib/moss_uuidgen.so« nicht laden: /usr/lib/postgresql/8.4/lib/moss_uuidgen.so: undefined symbol: palloc
moss=# \q
moss@McWiki:/usr/local$

源文件在这里可用:https://foundry.openuru.org/hg/MOSS/file/3e78d60a5282/postgresql 我使用makemake install 构建文件。 操作系统:Ubuntu Server 20.04 LTS 和 Postgre 8.4

【问题讨论】:

  • 您应该显示完整、准确的错误消息文本。总是。不是一个模糊的描述。操作系统和版本、如何编译自定义扩展 (?) 等详细信息也会非常有用...
  • 对不起,我的操作系统是 Ubuntu Server 12.04 LTS。错误消息是德语的,所以我想它不是很有用。我使用 make 和 make install 构建文件。
  • 感谢您提供错误详细信息。我看到您也在构建中使用 PGXS。它应该确保该库正确链接到postgres 可执行文件,并具有palloc 等符号。我觉得这非常奇怪。您是否完全自定义/重新编译了 PostgreSQL?或者你正在使用库存的 Ubuntu 软件包? nm /usr/lib/postgresql/8.4/lib/moss_uuidgen.so 的输出是什么? (添加为编辑,如果太长则添加为粘贴)和nm /usr/lib/postgresql/8.4/bin/postgres | grep palloc
  • 我还想在运行make clean 后查看make all 的输出

标签: postgresql postgresql-extensions


【解决方案1】:

感谢您的帮助,我意识到我为 psql 9.4 构建了文件并尝试将它与 psql 8.4 一起使用,这真的很愚蠢。现在用 8.4 重建后它工作正常(至少创建函数,db 仍然无法与我的游戏服务器一起工作)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多