pg_dump ОШИБКА: неверный отчет

У меня есть следующая таблица под названием « root @ latitude : ~ / pg_backup_lenovo # pg_dump - h 192.168.1.201 - U имя суперпользователя > имя . Dump pg_dump : [ архиватор ( db )] запрос не выполнен : ОШИБКА : неверный литерал записи : « bigint » LINE 1 : SELECT 'bigint' :: name AS sequence_type , start_value , increme ... ^ ДЕТАЛИ : Отсутствует левая скобка . pg_dump : [ archiver ( db )] запрос был : SELECT 'bigint' :: name AS sequence_type , start_value , increment_by , max_value , min_value , cache_value , is_cycled FROM name_id_seq "в базе данных, также называемой" CREATE TABLE public . Имя ( идентификатор BIGINT NOT NULL DEFAULT NEXTVAL ( 'name_id_seq' :: regclass ), текстовые имя КОПИИ pg_catalog . " по умолчанию" , секс текста КОПИИ pg_catalog . " по умолчанию" , введите текст КОПИИ pg_catalog . " по умолчанию" , CONSTRAINT name_pkey PRIMARY KEY ( идентификатор ) ) «У меня не было проблем с резервным копированием других баз данных на сервере, но для этой базы данных я получаю следующую ошибку

name

Моя схема

pg_catalog

Я не уверен, что здесь происходит. Может ли это быть возможной ошибкой?

postgresql,

3

Ответов: 1


nameэто встроенный тип, расположенный в publicпространстве имен.

При создании таблицы с этим именем в select * from pg_catalog.pg_type where typname='name'схеме создается другой тип, также называемый nameв nameсхеме, поскольку каждая таблица также является составным типом. Вы можете проверить это с помощьюSELECT 'bigint'::name AS sequence_type...

Обычно, когда вы делаете что-то name, как и запрос, который терпит неудачу ( pg_catalog), это тот тип, pg_catalogкоторый получает выбранный, потому что он publicнеявно предшествует search_path в 'bigint'::name, как указано в документе :

В дополнение к общедоступным и созданным пользователями схемам каждая база данных содержит схему pg_catalog, которая содержит системные таблицы и все встроенные типы данных, функции и операторы. pg_catalog всегда эффективно является частью пути поиска. Если он явно не указан явно в пути, он неявно просматривается перед поиском схем пути. Это гарантирует, что встроенные имена всегда будут доступны. Однако вы можете явно разместить pg_catalog в конце вашего пути поиска, если вы предпочитаете, чтобы пользовательские имена переопределяли встроенные имена .

Сообщение об ошибке, полученное с pg_dumpпомощью средств postgres, разрешает листинг с типом, соответствующим вашей таблице в publicсхеме, тогда как явно name ожидает, что nameвместо этого будет найден встроенный тип.

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

Чтобы проверить эту теорию, проверьте работоспособность search_pathпользователя pg_dumpи попытайтесь сбросить его после сброса до безобидного значения, например:

ALTER USER user_running_pg_dump SET search_path TO public;

PostgreSQL,
Похожие вопросы
Яндекс.Метрика