Ответ 1
Короче говоря:
Установите hstore в базе данных template1:
psql -d template1 -c 'create extension hstore;'
Пошаговое объяснение:
Как указано документацией PostgreSQL:
CREATE EXTENSION загружает новое расширение в текущую базу данных.
Установка расширения зависит от конкретной базы данных. Следующее возвращает имя текущей базы данных:
$ psql -c 'select current_database()'
current_database
------------------
username
(1 row)
Если у вас есть база данных с именем вашего имени пользователя. Теперь с dbtest
:
$ psql -d dbtest -c 'select current_database()'
current_database
------------------
dbtest
(1 row)
Хорошо, ты понял. Теперь для создания новых баз данных с установленным hstore вам нужно будет установить его в базу данных template1
. Согласно документу:
CREATE DATABASE фактически работает, копируя существующую базу данных. По умолчанию он копирует стандартную системную базу данных с именем template1.
Сделайте это:
$ psql -d template1 -c 'create extension hstore;'
И проверьте, что он работает:
$ 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)
Готово!