前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【踩坑实录】there is no unique or exclusion constraint matching the ON CONFLICT specification

【踩坑实录】there is no unique or exclusion constraint matching the ON CONFLICT specification

作者头像
chimchim
发布2022-11-13 13:26:39
1.4K0
发布2022-11-13 13:26:39
举报
文章被收录于专栏:chimchim要努力变强啊

目录

一、背景

二、定位问题

三、解决方案

四、后续坑

五、总结


一、背景

使用datax postgresqlwriter组件upsert数据时报错

error:there is no unique or exclusion constraint matching the ON CONFLICT specification

datax  自定义json postgresqlwriter中json新增writeMode

代码语言:javascript
复制
"writeMode": "update (id)"

二、定位问题

原来是因为pg5.0以上的版本的新特性,根据约束,存在才更新,不存在则插入,而且字段属性必须是unique,否则还会报错

三、解决方案

--为pg目标表添加约束

ALTER TABLE public.pg_table_name

ADD constraint "upsert_pkey" unique (id);

注意:unique中字段可以为多个

四、后续坑

本来以为到这里已经解决了,结果又发现了新坑。。。

加完约束后在执行居然又报错 null value in column "col_name" violates not-null constraint

我竟无语凝噎,然后又去将pg表所有字段给了默认值,才成功了。

五、总结

最后总结一下,约束加不加我测试了都无所谓,但是所有字段都必须要设定默认值,这个配好之后uodate模式就能执行成功了!!!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-10-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、背景
  • 二、定位问题
  • 三、解决方案
  • 四、后续坑
  • 五、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档