【问题标题】:Postgres: two dictionaries with same namePostgres:两个同名字典
【发布时间】:2016-08-05 06:05:05
【问题描述】:

我使用以下查询创建了一个文本搜索字典。

CREATE TEXT SEARCH DICTIONARY english_stem 
(TEMPLATE = snowball, Language = english, StopWords = english);

但是我意识到已经有一个同名的字典 'english_stem' 归超级用户所有,我最终得到了两个同名的字典 'english_stem';一个归super所有,一个归我所有。

所以我尝试删除使用此查询创建的那个:

DROP TEXT SEARCH DICTIONARY english_stem;

但我收到“[42501] 错误:必须是文本搜索字典english_stem 的所有者”消息。我猜 drop 查询试图删除由超级用户拥有的 english_stem 字典,而不是我拥有的。如何删除我拥有的english_stem字典?

如果postgres允许多个同名字典,我想在对它们执行alter/drop命令时必须有一种方法来区分它们。

顺便说一句,可能是我自己创建的,tsquery比较慢;甚至比 like 查询还要慢。

注意:我正在寻找一种无需联系超级用户即可解决此问题的方法。

【问题讨论】:

  • 您在不同的架构中创建它 - 只需指定完整路径

标签: postgresql dictionary


【解决方案1】:

我相信您在架构中或公开创建了字典。签出:

SELECT * from  pg_catalog.pg_ts_dict 
JOIN pg_catalog.pg_namespace n ON n.oid = pg_ts_dict.dictnamespace;

如果是这样,只需添加架构名称,例如:

DROP TEXT SEARCH DICTIONARY public.english_stem;

【讨论】:

    猜你喜欢
    • 2011-02-08
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多