You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决PostgreSQL中ERROR: permission denied for language c错误

解决PostgreSQL创建uuid-ossp扩展时的「permission denied for language c」错误

问题重现

尝试创建uuid-ossp扩展时触发权限错误,修改pg_language表也失败,操作步骤如下:

$ 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

解决方案

方法一:切换系统数据库修改语言权限

  1. 从books数据库切换回postgres系统数据库:
\c postgres
  1. 在postgres数据库中修改C语言的信任状态(超级用户在此库拥有完整权限):
UPDATE pg_language SET lanpltrusted = true WHERE lanname = 'c';
  1. 切换回books数据库创建扩展:
\c books
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";

方法二:直接赋予数据库语言使用权限

若方法一无效,可直接为当前用户赋予C语言的使用权限:

\c books
GRANT USAGE ON LANGUAGE c TO postgres;
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";

方法三:从系统数据库同步扩展

如果uuid-ossp已在postgres数据库中安装,可直接同步到books库:

\c books
CREATE EXTENSION "uuid-ossp" FROM unpackaged;

内容的提问来源于stack exchange,提问作者xpt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 11:26:02