无法使用uuid并创建扩展以使用它

32

我想在 Ubuntu 13 上的 Postgresql 9.2 中使用 uuid。因此,当我尝试检查它是否可用时,我执行了以下操作:

select uuid_generate_v4() as one;

然后我得到了ERROR: function uuid_generate_v4() does not exist

接着我执行了CREATE EXTENSION "uuid-ossp";

ERROR:  could not open extension control file "/usr/share/postgresql/9.2/extension/uuid-ossp.control": No such file or directory

那么,接下来我该做什么?

顺便说一下,SELECT * FROM pg_available_extensions; 只返回 plpsql (1.0)

4个回答

44

没有安装包含该扩展的操作系统软件包。要安装它:

apt-get install postgresql-contrib-9.2

1
我最终使用了一个更通用的软件包postgresql-contrib,我认为它与您当前的版本相匹配。这对我也起作用了。 - Vini.g.fer

14

对于使用asdf版本管理器asdf-postgres插件的任何人,按照以下方式安装postgres版本即可解决此问题:

POSTGRES_EXTRA_CONFIGURE_OPTIONS=--with-uuid=e2fs asdf install postgres <VERSION>

4
对我来说,这也需要执行 sudo apt install uuid-dev,否则真是救命稻草,谢谢! - steel

3
如果你在Fedora或类似发行版上使用postgres rpm仓库安装了Postgres,以下是给你的建议:

sudo dnf install postgresql-contrib

该命令会从默认的Fedora仓库安装一个与Postgres冲突的软件包,例如:

/usr/pgsql-12/lib/libpq.so.5: no version information available (required by psql)

正确的方式是:

sudo dnf install postgresql12-contrib

你可以在安装过程中进行双重检查,它必须来自pgdg12,与postgresql-server相同。(要插入您的Postgres版本而不是“12”)

1
如果您仍然遇到错误,请尝试手动运行/usr/share/postgresql/9.X/extension/uuid-ossp*.sql中的两个SQL文件到您的数据库中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接