Skip to main content
TOAST カラム、replication slots、publications、スキーマ変更、型マッピングなど、Postgres のレプリケーションの仕組みに関する多くの疑問は、ClickPipes for Postgres よくある質問で扱っています。そこに記載されている情報は、ClickHouse Managed Postgres の移行にも当てはまります。

レプリケーション中に「enum に対する無効な入力値」エラーが表示される

このエラーは、ソース側の Postgres に存在する enum 値が、ターゲットの ClickHouse Managed Postgres には存在しない場合に発生します。logical replication では ALTER TYPE ... ADD VALUE コマンドは自動的に伝播されないため、初回のスキーマ設定後にソース側で追加された新しい enum 値があると、ターゲット側で insert が失敗します。 これを修正するには、ターゲットの Postgres で enum 型に不足している値を追加します。
your_enum_type はご使用の enum 型名に、'new_value' はエラーメッセージに表示されている不足値に置き換えてください。

レプリケーション中に一意制約またはチェック制約違反エラーが発生する

logical replicationでは、レプリケーションの順序がターゲットに既存の制約と競合すると、制約違反が発生することがあります。
  • 一意制約: 変更は、主キーごとの最新の値を書き込むバッチ MERGE/UPSERT 操作として適用されるため、特定のキーに対する操作順序が一意索引で想定される順序と一致しない場合があります。そのため、MERGE の完了後には制約が満たされていても、トランザクション内で一時的に UNIQUE 制約に違反することがあります。Postgres では外部キーの場合とは異なり、一意索引のチェックを遅延できないため、チェックをトランザクションの終了時まで延期することはできません。これはデータ整合性には影響しません。行の識別は主キーによって定義され、MERGE ロジックも同じ主キーに基づいているためです。
  • チェック制約: ターゲットのチェック制約がソースより厳しい場合や、バッチ MERGE 中の中間状態が、最終状態では制約を満たすにもかかわらず、一時的に制約を満たさない場合があります。一意制約と同様に、MERGE は行の識別を定義する主キーに基づいているため、これはデータ整合性には影響しません。
レプリケーションを再開するには、ターゲットの Postgres で問題の制約を削除します。
エラーメッセージ内の名前から制約の詳細を確認できます。
レプリケーションが完了し、ログソースがアクティブでなくなったら、カットオーバー時に制約を再度追加します。
最終更新日 2026年8月14日