Подтвердить что ты не робот

Как установить модуль hstore на PostgreSQL 9.0 (установка MacPorts)?

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

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

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

4b9b3361

Ответ 1

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

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

sudo port -f uninstall postgresql91

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

sudo port edit postgresql91

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

sudo port -s install postgresql91

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

In >= 9.1: CREATE EXTENSION hstore;

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

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

Ответ 2

Кажется, что порт для 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

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

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, используйте новую команду "create extension" 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)

Ответ 3

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

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

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

Ответ 4

Решение Joey Adam правильное, но немного устарело от postgres 9.1:

Я сделал следующее по-другому от его поста:

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