web-dev-qa-db-fra.com

Postgresql: ERREUR: le type "citext" n'existe pas

J'ai lu d'autres messages, lors de la recherche, une réponse à cette question.

J'utilise PostgreSQL 9.1 et j'ai créé l'extension 'citext' en utilisant CREATE EXTENSION citext, mais lorsque j'essaie de créer des colonnes de type "citext", il renvoie cette erreur

ERREUR: le type "citext" n'existe pas

J'ai fait des recherches mais je n'ai trouvé aucune réponse concrète? Une idée pourquoi?

42
NullException

Ok compris. J'ai plusieurs bases de données et CREATE EXTENSION citext doit être exécuté pour chaque base de données pour installer l'extension dans cette base de données. Vous devez faire sur psql Prompt:

psql =# \c db_1
CREATE EXTENSION citext;

psql =# \c db_2
CREATE EXTENSION citext;

J'espère que cela aide les autres. Je vous remercie.

75
NullException

@NullException a raison de dire que l'extension doit être créée dans chaque base de données. Si vous souhaitez créer automatiquement une extension, vous pouvez la créer dans le template1 base de données qui (par défaut, au moins) est la base de données utilisée comme modèle pour "créer une base de données", donc avec les autorisations appropriées, en psql:

\c template1
create extension citext;

Ensuite, les nouvelles bases de données incluront citext par défaut.

16
shaunc