powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Ключ секционирования для неподходящей строки содержит...
6 сообщений из 6, страница 1 из 1
Ключ секционирования для неподходящей строки содержит...
    #39755510
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что-то гугл про ошибки партицирования совсем ничего не знает...
текст ошибки тупо не находит
а дело в следующем: партицирование работает, если делать как тут
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE TABLE measurement (
    city_id         int not null,
    logdate         date not null,
    peaktemp        int,
    unitsales       int
) PARTITION BY RANGE (logdate);

CREATE TABLE measurement_y2006m02 PARTITION OF measurement
    FOR VALUES FROM ('2006-02-01') TO ('2006-03-01');



но если сделать так:
Код: sql
1.
2.
3.
4.
Для реализации вложенного секционирования укажите предложение PARTITION BY в командах, создающих отдельные секции, например:
CREATE TABLE measurement_y2006m02 PARTITION OF measurement
    FOR VALUES FROM ('2006-02-01') TO ('2006-03-01')
    PARTITION BY RANGE (peaktemp);



то при попытке добавить запись вылетает ошибка:
ОШИБКА: для строки не найдена секция в отношении "logs3"
ПОДРОБНОСТИ: Ключ секционирования для неподходящей строки содержит (added) = (2019-01-02 15:48:13+03).
(таблица соот-но другая, но сделана по примеру из мануала:
Код: sql
1.
create table logs3 partition of logs2 for values from ('2019-01-02 00:00:00') to ('2019-01-03 23:59:59') partition by range(added);

)

этот "PARTITION BY RANGE" вроде как автоматически раскидывает данные по партициям:
авторКогда будут созданы секции measurement_y2006m02, данные, добавляемые в measurement и попадающие в measurement_y2006m02 (или данные, непосредственно добавляемые в measurement_y2006m02, с учётом соответствия ограничению секции) будут затем перенаправлены в одну из вложенных секций в зависимости от значения столбца peaktemp. Указанный ключ разбиения может пересекаться с ключом разбиения родителя, хотя определять границы вложенной секции нужно осмотрительно, чтобы множество данных, которое она принимает, входило во множество, допускаемое собственными границами секции; система не пытается контролировать это сама.
так что ему не нравится?
...
Рейтинг: 0 / 0
Ключ секционирования для неподходящей строки содержит...
    #39755514
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудухэтот "PARTITION BY RANGE" вроде как автоматически раскидывает данные по партициям:
Да, раскидывает. Но по существующим разделам.
Создавать необходимые разделы вы должны самостоятельно.
PARTITION BY RANGE - это создание партицированной таблицы, в конце дерева партицирования у вас должны быть созданы конечные разделы вроде такого:
Код: sql
1.
create table measurement_y2006m02_pt1 partition of measurement_y2006m02 for values from (1) to (10);
...
Рейтинг: 0 / 0
Ключ секционирования для неподходящей строки содержит...
    #39755515
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а, точно, таблица в таблице, спасибо
...
Рейтинг: 0 / 0
Ключ секционирования для неподходящей строки содержит...
    #39755635
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а можно ли нормально партицировать ключи такого плана:
{12345_6, 364739_2}
т.е. когда они в массиве и поиск идёт так:
col @> '{12345_6}'
...
Рейтинг: 0 / 0
Ключ секционирования для неподходящей строки содержит...
    #39842492
ОКТОГЕН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, при создании FOREIGN KEY на id в секционированной таблице получаем
Код: plaintext
ОШИБКА:  ссылаться на секционированную таблицу "tbl_part_main" нельзя
В будущих версиях будет?
...
Рейтинг: 0 / 0
Ключ секционирования для неподходящей строки содержит...
    #39842500
ursido
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ОКТОГЕН,

Говорят, что да: https://www.postgresql.org/docs/12/release-12.html , пункт E.1.3.1.1. Partitioning
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Ключ секционирования для неподходящей строки содержит...
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]