Postgres ts_vector

时间:2014-08-05 16:11:01

标签: postgresql full-text-search identifier quoting

我正在使用Seqeulize和Nodejs。

我的表名是“Users”,它有一个列“userName”。我已将ts vectored列命名为userNameVector。在尝试创建列并设置触发器时,我不断收到错误“errorMissingColumn”。

显然它告诉我,我的专栏“userName”不存在,但我检查了三次,确实如此。

节点控制台的日志如下:

Executing (default): ALTER TABLE "Users" ADD COLUMN "userNameVector" TSVECTOR
Executing (default): UPDATE "Users" SET "userNameVector" = to_tsvector('english', userName)
Executing (default): CREATE INDEX userName_search_idx ON "Users" USING gin("userNameVector");
Executing (default): CREATE TRIGGER userName_vector_update BEFORE INSERT OR UPDATE ON "Users" FOR EACH ROW EXECUTE PROCEDURE tsvector_update_trigger("userNameVector", 'pg_catalog.english', userName)
{ [Error: column "username" does not exist]
  severity: 'ERROR',
  code: '42703',
  position: '62',
  file: 'parse_relation.c',
  line: '2655',
  routine: 'errorMissingColumn',
  sql: 'UPDATE "Users" SET "userNameVector" = to_tsvector(\'english\', userName)' }

1 个答案:

答案 0 :(得分:0)

看起来像另一个被误导的CaMeL案件名称。

Postgres标识符默认为低位。如果您使用非标准名称(合法,全部为小写)并在创建时双引号,则必须在其余生中对其进行双重引用。所以:

"userName"代替userName

相关: