Ошибка связи в кэше ошибок PostgreSQL - почему это происходит и почему? - PullRequest
2 голосов
/ 03 февраля 2012

У меня есть запрос, который выдает ошибку при попытке создать временную таблицу.Запрос:

CREATE TEMPORARY TABLE temp_table_t (LIKE original_table INCLUDING INDEXES)

Возвращаемая ошибка:

postgres7 ошибка:[-1: ОШИБКА: не удалось выполнить поиск в кэше для отношения 14026125] в EXECUTE («CREATE TEMPORARY TABLE temp_table_t (LIKE original_table INCLUDING INDEXES)») *

Я нашел два потока на форумах PostgreSQL, но они этого не сделалиК сожалению, многое объяснить:

http://archives.postgresql.org/pgsql-performance/2010-04/msg00026.php

http://archives.postgresql.org/pgsql-performance/2010-04/msg00028.php

Этот запрос работает на других серверах просто отлично, он не работает конкретно только на одном из наших серверов.Можете ли вы дать мне какое-либо представление о том, что является причиной ошибки и как ее исправить?Сначала я подумал, что это результат создания временного имени таблицы с тем же именем существующей временной таблицы.Я обновил свой код, создавая временную таблицу со случайным именем, и это тоже не сработало.

Ответы [ 2 ]

3 голосов
/ 12 апреля 2012

Я отбрасывал схему, и у меня была эта ошибка "поиск не удалось установить для отношения xxxx".Также было название стола.Казалось, что некоторые таблицы из схемы, которую я удалял, были в странном состоянии.В конце мы выполнили эти третьи шаги.

  1. Мы получили C.oid таблицы.

    select c.oid
    from pg_class  c
    join pg_namespace n on n.oid=c.relnamespace
    where c.relname = 'MY_TABLE_NAME'
        and n.nspname='MY_SCHEMA_NAME';
    
  2. Далее:

    delete from pg_class where oid = MY_OID;
    delete from pg_depend where objid = MY_OID;
    delete from pg_constraint where conrelid = MY_OID;
    
  3. Наконец:

    drop schema MY_SCHEMA_NAME cascade
    

Затем появилась другая похожая ошибка с другой таблицей, и мы повторяли шаги с 1 по 3, пока не удалили схему.

1 голос
/ 16 декабря 2014

Я столкнулся с той же проблемой при создании временной таблицы из представления, похожего на то, что вы делаете здесь:

create temporary table temp_table_t (LIKE original_table including indexes);

У меня также был такой же странный опыт, с которым он происходил только приодин из наших серверов.

Для меня это было так же просто, как заменить original_table (который был для меня представлением) на синтаксис

create or replace view my_view as (  
    // my view definition
);

.После этого процесс, который я использовал для создания временных таблиц, не дал никаких ошибок.

Я не знаю, что вы можете сделать со своей таблицей, поскольку это не так просто, как переопределить представление.Если вы можете позволить себе потерять данные, попробуйте сбросить таблицу и воссоздать ее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...