Ошибка импорта схемы с типом "ltree" не существует` - PullRequest
0 голосов
/ 24 мая 2018

При попытке импортировать схему из Postgres 9.4 в Postgres RDS 9.6 появляется следующая ошибка:

ERROR:  type "ltree" does not exist
LINE 8:     path ltree,
                 ^

ltree установлено в источнике:

ltree   | 1.0     | pg_catalog | data type for hierarchical tree-like structures

ltree установленов месте назначения:

ltree   | 1.1     | public     | data type for hierarchical tree-like structures

Для выгрузки из Postgres:

pg_dump -h db0 -U deployer staging --schema public --schema-only > schema.dump

Для восстановления в RDS:

psql -h staging.us-east-1.rds.amazonaws.com -U deployer -d staging < schema.dump

Единственное место в дампе схемы, где ltree происходит, если это утверждение:

CREATE TABLE public.table (
    id integer NOT NULL,
    customer_id integer DEFAULT 0,
    ordinal integer NOT NULL,
    root_id integer,
    created_at timestamp without time zone,
    updated_at timestamp without time zone,
    path ltree,
    premium boolean DEFAULT false
);

В дампе нет CREATE EXTENSION.Я пытался добавить его перед импортом, но это не решило проблему.

Есть предложения?

1 Ответ

0 голосов
/ 25 мая 2018

Если deployer (пользователь, которого вы используете для «импорта» дампа) - rds_superuser, вы сможете сделать это, если нет, вы увидите:

ERROR:  permission denied to create extension "ltree"
HINT:  Must be superuser to create this extension.

Например:

mon=> set role stan;
SET
mon=> create extension ltree;
ERROR:  permission denied to create extension "ltree"
HINT:  Must be superuser to create this extension.
mon=> reset role;
RESET
mon=> create extension ltree;
CREATE EXTENSION
mon=> select session_user;
 session_user
--------------
 rdsadm
(1 row)

mon=> \du rdsadm
                           List of roles
  Role name  |          Attributes           |      Member of
-------------+-------------------------------+----------------------
 rdsadm      | Create role, Create DB       +| {rds_superuser,stan}
             | Password valid until infinity |
...