ERROR: Permission Denied for language c的答案对我不起作用:
$ psql -U postgres -d postgres
psql (15.4 (Debian 15.4-1.pgdg120+1))
postgres=> CREATE DATABASE books;
CREATE DATABASE
postgres=> \c books
You are now connected to database "books" as user "postgres".
postgres=> CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
ERROR: permission denied for language c
postgres=> UPDATE pg_language SET lanpltrusted = true WHERE lanname LIKE 'c';
ERROR: permission denied for table pg_language
这CREATE EXTENSION IF NOT EXISTS "uuid-ossp"
是我需要做的第一件事,否则我会收到如下错误:
ERROR: function uuid_generate_v4() does not exist
然而,却被挡住了permission denied for language c
。请问我怎样才能让它工作?
您需要成为超级用户才能创建 C 语言函数。
而且您永远不应该更新目录表。幸运的是,由于您不是超级用户,因此您不会搬起石头砸自己的脚。
如果您自己没有超级用户访问权限(鉴于您在此处尝试执行的操作,我希望您没有超级用户访问权限),则必须要求 DBA 为您运行这些语句。
最后,您不需要该扩展来生成随机 UUID。最新版本的 PostgreSQL 有
gen_random_uuid()
.