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
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 :
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
- Contraintes d’unicité : Nous appliquons les modifications sous forme d’opérations
MERGE/UPSERTpar 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 contrainteUNIQUEau sein de la transaction, même si la contrainte est respectée une fois leMERGEterminé. 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 duMERGErepose 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
MERGEpar 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 leMERGErepose sur la clé primaire qui définit l’identité des lignes.
Une erreur “cannot insert a non-DEFAULT value into column” se produit lors de la réplication
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 :
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
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 :
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.