Skip to main content
De nombreuses questions sur le fonctionnement de la réplication de Postgres — notamment concernant les colonnes TOAST, les slots de réplication, les publications, les changements de schéma et les correspondances de types de données — sont abordées dans la FAQ ClickPipes for Postgres. Les informations qui y figurent s’appliquent également aux migrations vers ClickHouse Managed Postgres.

Je rencontre une erreur “invalid input value for enum” pendant la réplication

Cette erreur se produit lorsque le Postgres source contient une valeur enum qui n’existe pas dans le ClickHouse Managed Postgres cible. La réplication logique ne propage pas automatiquement les commandes ALTER TYPE ... ADD VALUE ; par conséquent, les nouvelles valeurs enum ajoutées à la source après la configuration initiale du schéma entraîneront l’échec des insertions sur la cible. Pour corriger ce problème, ajoutez la valeur manquante au type enum sur le Postgres cible :
Remplacez your_enum_type par le nom de votre type enum et 'new_value' par la valeur manquante indiquée dans le message d’erreur.

Une erreur de violation de contrainte d’unicité ou de vérification survient pendant la réplication

Des violations de contraintes peuvent survenir lors de la réplication logique lorsque l’ordre de réplication entre en conflit avec une contrainte existante sur la cible.
  • Contraintes d’unicité : Nous appliquons les modifications sous forme d’opérations MERGE/UPSERT par lots, qui écrivent la valeur la plus récente pour chaque clé primaire. L’ordre des opérations pour une clé donnée peut donc ne pas correspondre à celui attendu par l’index unique. Cela peut entraîner temporairement une violation d’une contrainte UNIQUE au sein de la transaction, même si la contrainte est respectée une fois le MERGE terminé. Postgres ne peut pas différer les vérifications d’index uniques comme il le fait pour les clés étrangères. Il n’est donc pas possible de reporter la vérification à la fin de la transaction. Cela n’affecte pas la cohérence des données : l’identité des lignes est définie par la clé primaire, et la logique du MERGE repose sur cette même clé primaire.
  • Contraintes de vérification : Une contrainte de vérification sur la cible peut être plus stricte que sur la source, ou un état intermédiaire lors d’un MERGE par lots peut ne pas satisfaire la contrainte, même si l’état final la respecte. Comme pour les contraintes d’unicité, cela n’affecte pas la cohérence des données, car le MERGE repose sur la clé primaire qui définit l’identité des lignes.
Pour débloquer la réplication, supprimez la contrainte problématique du Postgres cible :
Vous pouvez obtenir les détails de la contrainte à l’aide du nom indiqué dans le message d’erreur :
Réappliquez les contraintes lors du basculement, une fois la réplication terminée et la source n’est plus active :

Une erreur “cannot insert a non-DEFAULT value into column” se produit lors de la réplication

Cette erreur se produit lorsqu’une colonne de la cible — généralement la clé primaire — est définie comme GENERATED ALWAYS AS IDENTITY. La réplication logique transmet les valeurs explicites de la source, mais une colonne GENERATED ALWAYS rejette toute valeur autre que DEFAULT ; les insertions échouent donc avec :
Pour résoudre ce problème, modifiez la colonne dans le Postgres cible afin qu’elle accepte les valeurs fournies par l’utilisateur. Vous pouvez définir la colonne d’identité sur GENERATED BY DEFAULT AS IDENTITY :
GENERATED BY DEFAULT AS IDENTITY (ou une colonne serial/bigserial) génère toujours automatiquement des valeurs lorsqu’aucune n’est fournie, mais contrairement à GENERATED ALWAYS, accepte également les valeurs explicites répliquées depuis la source.

Une erreur « extension is not available » s’affiche lors de la migration

Cette erreur se produit lors de la migration automatisée du schéma (pg_dump) lorsque le schéma source dépend d’une extension Postgres qui n’est pas installée ou disponible sur le Managed Postgres cible. Elle se présente sous l’une des formes suivantes :
Remplacez your_extension par l’extension indiquée dans votre message d’erreur. Pour résoudre ce problème, vous pouvez :
  • recréer le pipe en utilisant le mode Manuel de dump du schéma, afin d’ajuster le schéma pour supprimer ou remplacer la dépendance à l’extension non prise en charge ; ou
  • ouvrir un ticket auprès du Support pour faire activer l’extension sur le Managed Postgres cible.
Dernière modification le 26 août 2026