Postgresql
在帶有 pg_trgm 擴展的模式中創建 GIN 索引
我正在將實體從
public
模式遷移到一個新的模式中,我們稱之為myschema
。最初,pg_trgm
安裝了擴展並在架構遷移中創建了索引:CREATE EXTENSION IF NOT EXISTS pg_trgm; CREATE INDEX mytable_gin_index_on_mycolumn ON mytable USING gin (mycolumn gin_trgm_ops);
為此,
myschema
我將遷移修改為如下所示:CREATE EXTENSION IF NOT EXISTS pg_trgm WITH SCHEMA myschema; CREATE INDEX mytable_gin_index_on_mycolumn ON mytable USING gin (mycolumn gin_trgm_ops);
但是,索引創建失敗並出現以下錯誤:
訪問方法“gin”不存在運算符類“gin_trgm_ops”
我嘗試命名操作符類:
CREATE EXTENSION IF NOT EXISTS pg_trgm WITH SCHEMA myschema; CREATE INDEX mytable_gin_index_on_mycolumn ON mytable USING gin (mycolumn myschema.gin_trgm_ops);
但得到了同樣的錯誤:
訪問方法“gin”不存在運算符類“myschema.gin_trgm_ops”
我還嘗試在不指定架構的情況下安裝擴展,這會產生相同的錯誤。
在除 之外的模式中使用 pg_trgm 擴展的正確方法是什麼
public
?
您可以在執行 DDL 語句之前調整search_path :
set search_path = myschema,public;