Pour faire court :
Installez hstore dans la base de données template1 :
psql -d template1 -c 'create extension hstore;'
Explication étape par étape :
Comme indiqué par la documentation PostgreSQL :
CREATE EXTENSION charge une nouvelle extension dans la base de données actuelle.
L'installation d'une extension est spécifique à la base de données. Ce qui suit vous renvoie le nom de la base de données actuelle :
$ psql -c 'select current_database()'
current_database
------------------
username
(1 row)
Dans le cas où vous avez une base de données nommée d'après votre nom d'utilisateur. Maintenant avec dbtest
:
$ psql -d dbtest -c 'select current_database()'
current_database
------------------
dbtest
(1 row)
D'accord, vous l'avez compris. Maintenant, pour créer de nouvelles bases de données avec hstore installé, vous devrez l'installer dans le template1
base de données. D'après la doc :
CREATE DATABASE fonctionne en fait en copiant une base de données existante. Par défaut, il copie la base de données système standard nommée template1.
Faisons ceci :
$ psql -d template1 -c 'create extension hstore;'
Et vérifiez que cela fonctionne :
$ createdb dbtest
$ psql -d dbtest -c '\dx'
List of installed extensions
Name | Version | Schema | Description
---------+---------+------------+--------------------------------------------------
hstore | 1.0 | public | data type for storing sets of (key, value) pairs
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
(2 rows)
Terminé !