Postgresql
RDS 交叉表:錯誤:語言 c 的權限被拒絕
我們目前在生產數據庫中使用 PostgreSQL 9.2,我們希望遷移到使用 PostgreSQL 9.4 的新 RDS 實例。但是,我們需要有創建函式的權限,但是只有超級使用者才能在 RDS 上創建函式,而我的使用者不能被授予超級使用者。
CREATE FUNCTION crosstab50(text, OUT rownumber integer, OUT c1 text,...) RETURNS SETOF record LANGUAGE c STABLE STRICT AS '$libdir/tablefunc', 'crosstab';
但是我們在恢復操作期間遇到了這個錯誤:
ERROR: permission denied for language c
RDS 不允許您安裝任意 C 函式。這是一個受限的環境。
crosstab
是tablefunc
擴展的一部分。如果它在白名單上,您可能CREATE EXTENSION tablefunc
可以添加,但您將無法添加新變體,即使底層 C 函式已載入並獲得批准。