> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-revert-104359-revert-104251-parquet-single.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# FAQ sobre migrações do ClickHouse Managed Postgres

> Perguntas frequentes sobre migração de dados para o ClickHouse Managed Postgres.

export const PrivatePreviewBadge = () => {
  return <div className="privatePreviewBadge">
            <div className="privatePreviewIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path d="M5.33301 6.66667V4.66667V4.66667C5.33301 3.194 6.52701 2 7.99967 2V2C9.47234 2 10.6663 3.194 10.6663 4.66667V4.66667V6.66667" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path d="M8.00033 9.33337V11.3334" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path fillRule="evenodd" clipRule="evenodd" d="M11.333 14H4.66634C3.92967 14 3.33301 13.4033 3.33301 12.6666V7.99996C3.33301 7.26329 3.92967 6.66663 4.66634 6.66663H11.333C12.0697 6.66663 12.6663 7.26329 12.6663 7.99996V12.6666C12.6663 13.4033 12.0697 14 11.333 14Z" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>
        </div>
            {'Em prévia privada no ClickHouse Cloud'}
        </div>;
};

<PrivatePreviewBadge link="https://clickhouse.com/cloud/postgres" galaxyTrack={true} slug="migrations-faq" />

Muitas dúvidas sobre como funciona a replicação do Postgres — incluindo colunas `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](/pt-BR/integrations/clickpipes/postgres/faq). As informações de lá também se aplicam às migrações do ClickHouse Managed Postgres.

<div id="invalid-enum-value">
  ### Estou vendo um erro de "valor de entrada inválido para enum" durante a replicação
</div>

Esse erro ocorre quando o Postgres de origem tem um valor de enum que não existe no ClickHouse Managed Postgres de destino. A replicação lógica não propaga automaticamente os comandos `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:

```sql theme={null}
ALTER TYPE your_enum_type ADD VALUE 'new_value';
```

Substitua `your_enum_type` pelo nome do seu tipo Enum e `'new_value'` pelo valor ausente na mensagem de erro.

<div id="constraint-violation">
  ### Estou recebendo um erro de violação de restrição de unicidade ou de verificação durante a replicação
</div>

Violações de restrição podem ocorrer durante a replicação lógica quando a ordem de replicação entra em conflito com uma restrição existente no destino.

* **Restrições de unicidade**: Aplicamos as alterações como operações `MERGE`/`UPSERT` em 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ção `UNIQUE` durante a transação, embora a restrição seja atendida após a conclusão do `MERGE`. 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 do `MERGE` usa 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 `MERGE` em 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 o `MERGE` usa a chave primária que define a identidade da linha.

Para desbloquear a replicação, remova a restrição problemática do Postgres de destino:

```sql theme={null}
-- Drop a unique constraint
ALTER TABLE your_table DROP CONSTRAINT your_constraint_name;

-- Drop a check constraint
ALTER TABLE your_table DROP CONSTRAINT your_check_constraint_name;
```

Você pode encontrar os detalhes da restrição usando o nome indicado na mensagem de erro:

```sql theme={null}
SELECT conname, conrelid::regclass, contype
FROM pg_constraint
WHERE conname = 'your_constraint_name';
```

Adicione novamente as restrições durante a migração, após a conclusão da replicação e quando a origem não estiver mais ativa:

```sql theme={null}
ALTER TABLE your_table ADD CONSTRAINT your_constraint_name UNIQUE (column1, column2);
ALTER TABLE your_table ADD CONSTRAINT your_check_constraint_name CHECK (column1 > 0);
```
