Как решить ошибку Postgres 11: не удается направить вставленные кортежи во внешнюю таблицу

Я пробую пример разделения и FDW, описанный в https://pgdash.io/blog/postgres-11-sharding.html. После создания расширения FDW и таблицы сторонних разделов (temperatures_2016), когда я пытаюсь вставить данные 2016 в главную таблицу температур, она выдает

ОШИБКА: невозможно перенаправить вставленные кортежи в стороннюю таблицу.

Как мне решить эту проблему?

- на другом сервере box2

CREATE TABLE temperatures_2016 (
    at      date,
    city    text,
    mintemp integer,
    maxtemp integer
);

--на моем сервере

CREATE FOREIGN TABLE temperatures_2016
    PARTITION OF temperatures
    FOR VALUES FROM ('2016-01-01') TO ('2017-01-01')
    SERVER box2;

INSERT INTO temperatures (at, city, mintemp, maxtemp) 
VALUES ('2016-08-23', 'HongKong', 29, 40);

Я ожидаю, что строка будет вставлена ​​во внешнюю таблицу разделов, вместо этого я получаю

ОШИБКА: не удается направить вставленные кортежи в состояние SQL внешней таблицы: 0A000


person Anju Sankar    schedule 18.01.2019    source источник


Ответы (1)


Вероятно, у вас PostgreSQL версии 10.

Вставка в таблицу с разделами, которые являются сторонними таблицами, была введена в v11:

  • Разрешить INSERT, UPDATE и COPY в секционированных таблицах правильно направлять строки во внешние секции (Эцуро Фудзита, Амит Ланготе)

    Это поддерживается postgres_fdw сторонними таблицами.

Во всяком случае, это сообщение об ошибке не появляется в базе кода v11.

Возможно, вы подключаетесь к серверу v10 с клиентом v11?

person Laurenz Albe    schedule 18.01.2019
comment
На моем компьютере установлена ​​версия postgre: PostgreSQL-11.1-1-win64-bigsql и pgAdmin 4. - person Anju Sankar; 18.01.2019
comment
Ты прав. Я использую сервер v10 с клиентом v11 .. В командной строке postgres -V show 11.1, когда я проверяю службы приложения, он показывает, что PostgreSQL Server 10 запущен. Спасибо, Лауренс. - person Anju Sankar; 18.01.2019
comment
Вы можете просто SHOW server_version;. - person Laurenz Albe; 18.01.2019