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
Связанные с: