Назад | Перейти на главную страницу

Google Cloud SQL: ошибка при импорте дампа Postgresql с расширениями

Пытаюсь импортировать дамп с его расширениями, отрывок из SQL:

CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog;
COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language';
CREATE EXTENSION IF NOT EXISTS hstore WITH SCHEMA public;
COMMENT ON EXTENSION hstore IS 'data type for storing sets of (key, value) pairs';

Импорт (через пользовательский интерфейс Gcloud SQL) не выполняется с SET SET SET SET SET SET CREATE EXTENSION ERROR: must be owner of extension plpgsql.

Это понятная ошибка (у пользователя сервиса GCloud нет прав), но это не помогает. Я не могу контролировать процесс восстановления, если он запускается пользовательским интерфейсом и вручную устанавливает права собственности, Google Cloud SQL не позволяет назначать полномочия суперпользователя роли (и это не лучший способ справиться с этим).

Как лучше поступить в такой ситуации?

Пока никто не ответил, так что я расскажу, как я это преодолел.

  1. Подключитесь к своему экземпляру как пользователь postgres, подключитесь к базе данных template1 и установите необходимые расширения (если они находятся в список поддерживаемых).

  2. Отбросьте и заново создайте свою БД из пользовательского интерфейса Cloud SQL. Может и мануал работает, но я решил не тестировать. Пользовательский интерфейс сообщает вам, что новая БД будет создана с использованием template1.

  3. Измените свой дамп и закомментируйте любое создание расширения.
  4. Импортируйте через пользовательский интерфейс и надеюсь, что это сработает.

В моем случае были только расширения plpgsql и hstore, так что никаких проблем.