【发布时间】: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
我使用make 和make 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