最简单的方法是在PostgreSQL中沉默“单词太长而无法编入索引”

时间:2012-10-17 00:53:32

标签: postgresql tsvector

我有一些导致这种情况发生的SQL语句:

NOTICE:  word is too long to be indexed
DETAIL:  Words longer than 2047 characters are ignored.

首先不生成这些通知的最简单方法是什么? (这是一个很长的故事,为什么我想这样做。)

这种陈述的一个例子是:

update rev set html = regexp_replace(html,
                         '***=<a href="' || old.url || '">',
                         '<a href="' || new.url || '">',
                         'gi')
        where id in (
            select id
                    from rev
                    where to_tsvector('tags_only', html) @@
                      plainto_tsquery('tags_only','<a href="' || old.url || '">')
        )

这不是带有长网址的A标签或导致问题的任何内容。它可能嵌入了CDATA风格的图形。我不在乎他们没有索引,无论他们是什么。我只是希望这些通知不会发生。

1 个答案:

答案 0 :(得分:3)

如果您不介意禁止所有通知,只需更改PostgreSQL错误报告级别。 client_min_messages定义发送给客户端的最低级别的错误/警告/通知消息,log_min_messages对日志中保存的消息执行相同操作。可能的值为:DEBUG5, DEBUG4, DEBUG3, DEBUG2, DEBUG1, INFO, NOTICE, WARNING, ERROR, LOG, FATAL, PANIC

编辑:

仅对此查询禁用:SET LOCAL client_min_messages TO WARNING;

仅对此会话禁用:SET SESSION client_min_messages TO WARNING;

禁用此用户:ALTER ROLE username SET client_min_messages TO WARNING;