명령을 사용하여 Postgres 데이터베이스에 대한 깨끗한 소유자 백업을 덤프했습니다.
pg_dump sample_database -O -c -U
나중에 데이터베이스를 복원 할 때
psql -d sample_database -U app_name
그러나 데이터 복원을 방해하는 몇 가지 오류가 발생했습니다.
ERROR: must be owner of extension plpgsql
ERROR: must be owner of schema public
ERROR: schema "public" already exists
ERROR: must be owner of schema public
CREATE EXTENSION
ERROR: must be owner of extension plpgsql
일반 텍스트 SQL pg_dump
생성을 파헤 치고 SQL 이 포함되어 있음을 발견했습니다.
CREATE SCHEMA public;
COMMENT ON SCHEMA public IS 'standard public schema';
CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog;
COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language';
원인은 사용자 app_name
가 public
스키마 및 plpgsql
.
이 문제를 어떻게 해결할 수 있습니까?
plpgsql
,DROP EXTENSION plpgsql
당신 전에pg_dump
. 이 앱 슈퍼 사용자를 만들기보다 안전이며, (당신이 사용하는 경우 폭탄 오류를 무시하고보다 편리--single-transaction
또는-v ON_ERROR_STOP=1
). 이것은 알려진 문제입니다. [Postgres 개발자가 자세히 설명] postgresql.org/message-id/… 그러나 9.3부터 수정되지 않았습니다.