PostgreSql hstore расширение с проблемой публичного префикса - PullRequest
0 голосов
/ 25 января 2019

Я боролся с моим расширением PostgreSql и hstore, поэтому в моем файле дампа sql поля hstore создаются с помощью этого скрипта:

CREATE EXTENSION IF NOT EXISTS hstore WITH SCHEMA public;
CREATE TABLE public.identity_devices (
    ...
    metadata public.hstore
);

Итак, я получаю сообщение об ошибке

structure.sql:2058: ERROR:  type "public.hstore" does not exist

Но если я использую

metadata hstore

все отлично работает.

Также следует отметить, что это происходит только в нашем CI, где мы работаем как пользователь runner, но владельцем схемы public является postgres.

Если понадобятся дополнительные данные, пожалуйста, дайте мне знать, и я предоставлю.

С уважением,

Ответы [ 2 ]

0 голосов
/ 25 января 2019

Поскольку мы используем Postgres9.3, мы должны установить hstore manually, on our CI they use Postgres9.6 which automatically add hstore` при создании Db.

Кроме того, он помещает hstore в пространство имен pg_catalog, что, как оказалось, было главной причиной, по которой hstore не было видно public.hstore.

Так что мне нужно было сделать один шаг после создания БД на CI, который отбрасывает конкретное расширение и создает новое в правильной схеме.

В любом случае, проблема была не такой сложной, как хитрой и странной.

0 голосов
/ 25 января 2019

Вы можете проверить, если и где расширение уже установлено, с помощью команды \dx hstore

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