原因是sql语句中用到了conflict但表结构里面没有相关的限制
举例:
表结构如下:
CREATE TABLE "public"."test" ("a" varchar(255) COLLATE "pg_catalog"."default","b" varchar(255) COLLATE "pg_catalog"."default","c" varchar(255) COLLATE "pg_catalog"."default"
);
执行插入并使用confict:
insert into test values('a','b') on conflict(a,b) do update set c='1';
由于建表时没有建关于a,b的CONSTRAINT,于是就会报错,为表添加CONSTRAINT:
ALTER TABLE "public"."test" ADD CONSTRAINT "test_pkey" PRIMARY KEY ("a", "b");
再执行就成功了。