Я сбрасываю большую базу данных с pg_dump -O -U <user> <db> >dump.sql
.
Вот суть dump.sql со всем, что не имеет отношения к делу.
При импорте дампа в другой экземпляр Postgres (идентичные настройки) с psql -f dump.sql -U <user> <db>
в строке CREATE INDEX
147 возникает следующая ошибка:
psql:dumped.sql:147: ERROR: type "hstore" does not exist
LINE 5: element hstore;
^
QUERY:
DECLARE
arrHstore ALIAS FOR $1;
key ALIAS FOR $2;
element hstore;
string text;
BEGIN
FOREACH element IN ARRAY arrHstore LOOP
string := concat(string, ' ', element->key);
END LOOP;
RETURN trim(leading from string, ' ');
END;
CONTEXT: compilation of PL/pgSQL function "immutable_array_to_string" near line 5
Так что все, кроме последнего CREATE INDEX
сработало.
Теперь я подключаюсь к базе данных с помощью psql -U <user> <db>
и вставляю ранее ошибочную команду CREATE INDEX
... индекс создается без проблем.
Несколько вещей, которые я пробовал:
- Создание дампа только структуры с
--schema-only
создает дамп, который импортируется очень хорошо. Проблема возникает только в том случае, если в качестве дампа вставлена хотя бы одна строка.
- Я склонен исключить владельца / разрешения в качестве причины, потому что я создаю дамп с
-O
.
- Этому конкретному индексу уже несколько лет, и подобные свалки до недавнего времени работали нормально. Следовательно, это может быть связано с обновлением до Postgres 10.3. Однако у меня нет простого способа проверить дамп на старых версиях, так как он не совместим с предыдущими версиями.
Есть идеи, что здесь происходит? Большое спасибо заранее!