Skip to main content
Многие вопросы о работе репликации Postgres — включая столбцы TOAST, слоты репликации, публикации, изменения схемы и сопоставление типов данных — освещены в FAQ по ClickPipes для Postgres. Эта информация также применима к миграциям ClickHouse Managed Postgres.

Во время репликации появляется ошибка “invalid input value for enum”

Эта ошибка возникает, когда в исходном Postgres есть значение enum, которого нет в целевом ClickHouse Managed Postgres. Логическая репликация не передаёт команды ALTER TYPE ... ADD VALUE автоматически, поэтому новые значения enum, добавленные в источнике после первоначальной настройки схемы, приведут к сбою вставки в целевой базе. Чтобы исправить это, добавьте отсутствующее значение в тип enum в целевом Postgres:
Замените your_enum_type на имя вашего enum-типа, а 'new_value' — на отсутствующее значение из сообщения об ошибке.

Во время репликации возникает ошибка нарушения ограничения уникальности или проверки

Нарушения ограничений могут возникать при логической репликации, когда порядок репликации приводит к конфликту с существующим ограничением на целевой стороне.
  • Ограничения уникальности: Мы применяем изменения пакетами в виде операций MERGE/UPSERT, записывая последнее значение для каждого первичного ключа, поэтому порядок операций для конкретного ключа может не соответствовать порядку, ожидаемому уникальным индексом. Это может временно нарушать ограничение UNIQUE в рамках транзакции, хотя после завершения MERGE ограничение соблюдается. Postgres не может отложить проверку уникального индекса так же, как проверку внешних ключей, поэтому перенести эту проверку на конец транзакции невозможно. Это не влияет на согласованность данных: идентичность строки определяется первичным ключом, и логика MERGE использует тот же первичный ключ.
  • Ограничения проверки: Ограничение проверки на целевой стороне может быть строже, чем на стороне источника, либо промежуточное состояние при пакетном MERGE может не удовлетворять ограничению, хотя конечное состояние ему соответствует. Как и в случае с ограничениями уникальности, это не влияет на согласованность данных, поскольку MERGE использует первичный ключ, определяющий идентичность строки.
Чтобы возобновить репликацию, удалите проблемное ограничение в целевой базе данных Postgres:
Найти сведения об ограничении можно по имени из сообщения об ошибке:
Добавьте ограничения снова при переключении, после завершения репликации и отключения источника:

При репликации возникает ошибка “cannot insert a non-DEFAULT value into column”

Эта ошибка возникает, когда столбец на целевой стороне — обычно первичный ключ — определён как GENERATED ALWAYS AS IDENTITY. Логическая репликация передаёт явные значения из источника, но столбец с GENERATED ALWAYS не принимает значения, отличные от DEFAULT, поэтому операция вставки завершается ошибкой:
Чтобы устранить эту проблему, измените столбец в целевом Postgres так, чтобы он принимал значения, указанные пользователем. Столбец identity можно переключить на GENERATED BY DEFAULT AS IDENTITY:
GENERATED BY DEFAULT AS IDENTITY (или столбец serial/bigserial) по-прежнему автоматически генерирует значения, если они не заданы, но, в отличие от GENERATED ALWAYS, также допускает явно заданные значения, реплицированные из источника.

Во время миграции возникает ошибка “extension is not available”

Эта ошибка возникает при автоматизированной миграции схемы (pg_dump), если исходная схема зависит от расширения Postgres, которое не установлено или недоступно в целевом Managed Postgres. Она может проявляться в одном из следующих вариантов:
Замените your_extension на расширение, указанное в сообщении об ошибке. Чтобы устранить проблему, выполните одно из следующих действий:
  • Пересоздайте пайп в режиме ручного экспорта схемы, чтобы изменить схему и удалить или заменить зависимость от неподдерживаемого расширения, или
  • Обратитесь в службу поддержки, чтобы включить расширение в целевом Managed Postgres.
Последнее изменение 26 августа 2026 г.