Postgres ts_vector

Я использую Seqeulize с Nodejs.

Моя таблица называется "Пользователи" и имеет столбец "имя пользователя". Я назвал векторную колонку TS 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 ответ

Решение

Похоже, еще один случай ошибочных имен случаев CaMeL.

По умолчанию идентификаторы Postgres в нижнем регистре. Если вы используете нестандартные имена (допустимые, все строчные) и ставите их в кавычки при создании, вы должны заключать их в двойные кавычки до конца их жизни. Так:

"userName" вместо userName

Связанные с:

Другие вопросы по тегам