Как установить модуль hstore на PostgreSQL 9.0 (установка MacPorts)? - PullRequest
11 голосов
/ 24 января 2011

На моем ноутбуке через MacPorts установлен прекрасный сервер PostgreSQL 9.0. Я хотел бы включить модуль hstore , но я не могу найти никаких инструкций по установке этих дополнительных модулей (и при этом я не могу найти какой-либо связанный с hstore код в /opt/local/share/postgresql90/contrib/).

Я обнаружил некоторый связанный с hstore SQL здесь , но я не уверен, откуда он или совместим ли он с PostgreSQL 9.0.

Итак, как мне включить модуль hstore на моем установленном MacPorts сервере Postgres 9.0?

Ответы [ 4 ]

20 голосов
/ 18 февраля 2012

Вы можете указать MacPorts создать hstore.Вот как.

Если у вас уже установлена ​​postgresql, вам нужно сначала удалить ее (это не затронет ваши данные или пользователей), поскольку действие install не приведет к переустановке уже установленнойпорт.Удаление принудительно (-f), поскольку postgresql91-server зависит и предотвратит удаление.

sudo port -f uninstall postgresql91

Отредактируйте файл порта и добавьте hstore в список в строке, которая начинается с set contribs:

sudo port edit postgresql91

(Переустановите из источника явно (-s), чтобы создать расширение hstore:

sudo port -s install postgresql91

Затем загрузите hstore, один раз для каждой из ваших баз данных, в которой вы хотитечтобы использовать его:

В> = 9,1: CREATE EXTENSION hstore;

В 9,0: psql -U postgres -f /opt/local/share/postgresql90/contrib/hstore.sql

Обратите внимание, что этот процесс работает для postgresql92, просто подставив "92" для "91" .

5 голосов
/ 05 октября 2011

Кажется, что порт для PostgreSQL 9.1 теперь включает в себя hstore, но он все еще должен быть включен.Установите и запустите базу данных в обычном режиме.

sudo port install postgresql91 postgresql91-server
sudo mkdir -p /opt/local/var/db/postgresql91/defaultdb
sudo chown postgres:postgres /opt/local/var/db/postgresql91/defaultdb
sudo su postgres -c '/opt/local/lib/postgresql91/bin/initdb \
  -D /opt/local/var/db/postgresql91/defaultdb'
sudo port load postgresql91-server

РЕДАКТИРОВАТЬ: Установка на другом компьютере также не работала.Hstore не был установлен с базой (возможно, я сделал его доступным, пробуя другие решения).Поэтому сделайте это ПЕРЕД командой загрузки выше:

sudo port unload postgresql91-server #  if you did load above
sudo port build postgresql91
port work postgresql91 # Gives you base dir for following command
cd /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_databases_postgresql91/postgresql91/work/postgresql-9.1.*/contrib/hstore
sudo make all
sudo make install clean
sudo port load postgresql91-server

Чтобы включить расширение hstore, используйте новую команду SQL «создать расширение» в базах данных, которые вы будете использовать hstore.Если вы установите его в базу данных template1, все базы данных, созданные впоследствии, будут иметь расширение hstore.

psql template1 postgres
template1=# create extension hstore;

Если расширение требуется только в определенной базе данных:

psql dbname dbuser
dbname=# create extension hstore;
create table a (id serial, data hstore);
NOTICE:  CREATE TABLE will create implicit sequence "a_id_seq" for serial column "a.id"
CREATE TABLE
dbname=# insert into a(data) values('a=>1, b=>2');
INSERT 0 1
dbname=# SELECT * from a;
 id |        data        
----+--------------------
  1 | "a"=>"1", "b"=>"2"
(1 row)
1 голос
/ 08 июля 2011

Решение Джои Адама верное, но немного устаревшее с postgres 9.1:

Я сделал следующее в отличие от его поста:

  • Вместо использования postgresql-server-devel я запустил 'sudo port install postgresql91-server' (первый был заменен последним)
  • Makefile в contrib / hstore был обновлен для использования PGXS (он выглядит в основном так же, как Joey, опубликованный выше); Мне не пришлось редактировать его.
  • Я пошел дальше и сделал sym-ссылку на / где-то / in / my / path / pg_config> / opt / local / lib / postgresql91 / bin / pg_config, чтобы Makefile завершился успешно (он ожидает pg_config в вашем пути ) * +1010 *
  • 9.1 имеет другой способ обработки расширений, такой как hstore; например, чтобы включить hstore, я сделал psql91 [my_schema], а затем> создал расширение hstore (вы можете прочитать больше о расширениях здесь http://developer.postgresql.org/pgdocs/postgres/sql-createextension.html)
1 голос
/ 24 января 2011

Я не могу сказать для MacOS (или для MacPorts), но в Windows есть файл "hstore.sql" в share / contrib, и он ссылается на библиотеку "hstore.dll", которая является частью регулярного дистрибутива ,

Это было включено в программу установки в один клик от EnterpriseDB. Я хотел бы предположить, что установщик одним щелчком для MacOS также включает этот модуль:

http://www.enterprisedb.com/products-services-training/pgdownload#osx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...