Как устранить ошибку 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
1 ответ
У вас, вероятно, есть версия PostgreSQL 10.
Вставка в таблицу с разделами, которые являются внешними таблицами, была введена в v11:
Разрешать
INSERT
,UPDATE
, а такжеCOPY
в секционированных таблицах для правильной маршрутизации строк в сторонние разделы (Etsuro Fujita, Amit Langote)Это поддерживается
postgres_fdw
иностранные столы.
В любом случае, это сообщение об ошибке не появляется в базе кода v11.
Возможно, вы подключаетесь к серверу v10 с клиентом v11?