Как устанвоить расширение CITEXT в postgres на ubuntu
Вот небольшая часть схемы, где я пытаюсь установить и использовать CITEXT. К сожалению postgres не видит расширение и пишет ERROR: type "citext" does not exist. Что с этим делать?
DROP SCHEMA IF EXISTS forum CASCADE;
CREATE SCHEMA forum;
CREATE EXTENSION IF NOT EXISTS CITEXT SCHEMA forum;
CREATE TABLE forum.profile
(
nickname CITEXT PRIMARY KEY NOT NULL,
fullname VARCHAR(60) NOT NULL,
about TEXT NOT NULL,
email VARCHAR(60) UNIQUE NOT NULL
);
Ответы (1 шт):
Нельзя пользоваться схемами и не знать, что такое search_path
Вы можете при обращении к чему-либо не указывать имя схемы, если эта схема входит в ваш search_path. В search_path в значении по умолчанию входят схема, имя которой совпадает с именем пользователя, схемы public, pg_catalog, pg_temp этой сессии. В остальных случаях вы должны указывать имя схемы.
CREATE EXTENSION IF NOT EXISTS CITEXT SCHEMA forum;
Здесь вы попросили установить расширение в схему forum. Туда всё это расширение и было поставлено. Почему вы решили следом обращаться с запросом по созданию таблицы forum.profile, но тип данных указать лишь только CITEXT вместо forum.citext?
Типы text и varchar на самом деле в схеме pg_catalog, потому видимы. Схема forum в вашем search_path отсутствует - потому такого типа данных найти не удалось.