TOAST, slots de replicação, publicações, alterações de esquema e mapeamentos de tipos de dados — são abordadas no FAQ do ClickPipes for Postgres. As informações de lá também se aplicam às migrações do ClickHouse Managed Postgres.
Estou vendo um erro de “valor de entrada inválido para enum” durante a replicação
ALTER TYPE ... ADD VALUE, então novos valores de enum adicionados na origem após a configuração inicial do esquema farão com que as inserções falhem no destino.
Para corrigir isso, adicione o valor ausente ao tipo enum no Postgres de destino:
your_enum_type pelo nome do seu tipo Enum e 'new_value' pelo valor ausente na mensagem de erro.
Estou recebendo um erro de violação de restrição de unicidade ou de verificação durante a replicação
- Restrições de unicidade: Aplicamos as alterações como operações
MERGE/UPSERTem lote que gravam o valor mais recente para cada chave primária. Portanto, a ordem das operações para uma determinada chave pode não corresponder à ordem esperada pelo índice único. Isso pode violar temporariamente uma restriçãoUNIQUEdurante a transação, embora a restrição seja atendida após a conclusão doMERGE. O Postgres não pode adiar verificações de índice único da mesma forma que adia verificações de chave estrangeira; portanto, não é possível postergar a verificação até o fim da transação. Isso não afeta a consistência dos dados: a identidade da linha é definida pela chave primária, e a lógica doMERGEusa essa mesma chave primária. - Restrições de verificação: Uma restrição de verificação no destino pode ser mais rigorosa do que na origem, ou um estado intermediário durante um
MERGEem lote pode não atender à restrição, mesmo que o estado final a atenda. Assim como ocorre com as restrições de unicidade, isso não afeta a consistência dos dados, pois oMERGEusa a chave primária que define a identidade da linha.
Estou recebendo o erro “cannot insert a non-DEFAULT value into column” durante a replicação
GENERATED ALWAYS AS IDENTITY. A replicação lógica envia os valores explícitos da origem, mas uma coluna GENERATED ALWAYS rejeita qualquer valor diferente de DEFAULT, fazendo com que as inserções falhem com:
GENERATED BY DEFAULT AS IDENTITY:
GENERATED BY DEFAULT AS IDENTITY (ou uma coluna serial/bigserial) ainda gera valores automaticamente quando nenhum é informado, mas, diferentemente de GENERATED ALWAYS, também aceita valores explícitos replicados da origem.
Estou recebendo o erro “extension is not available” durante a migração
pg_dump) quando o esquema de origem depende de uma extensão do Postgres que não está instalada ou disponível no Managed Postgres de destino. Ele se manifesta de uma das seguintes formas:
your_extension pela extensão mencionada na mensagem de erro.
Para resolver isso:
- Recrie o pipe usando o modo manual de dump do esquema para ajustar o esquema e remover ou substituir a dependência da extensão sem suporte, ou
- Abra um ticket de suporte para habilitar a extensão no Managed Postgres de destino.