详细:Failing row contains (null, xxx,xx..)大意是 你将id字段设置了不允许为空
但在插入数据时id 却是空 因为没有自增
以下是我的创建表sql 没有创建id序列 类似 mysql的 AUTO INCREMENTCREATE TABLE "public"."ship_faults" (
"id" int4 NOT NULL,
"is_ack" bool DEFAULT false,
CONSTRAINT "ship_faults_pkey" PRIMARY KEY ("id"),
CONSTRAINT "ship_faults_tag_key" UNIQUE ("tag")
)解决:
SELECT setval('ship_fault_alarm_log_id_seq', (SELECT MAX(id) FROM ship_fault_alarm_log));
-- 或者创建新的序列(如果序列不存在)
CREATE SEQUENCE ship_fault_alarm_log_id_seq;
ALTER TABLE ship_fault_alarm_log ALTER COLUMN id SET DEFAULT nextval('ship_fault_alarm_log_id_seq');
SELECT setval('ship_fault_alarm_log_id_seq', COALESCE((SELECT MAX(id) FROM ship_fault_alarm_log), 1), false);也可以在创建表的时候 使用 SERIAL 自动创建序列
-- 使用 SERIAL 自动创建序列
CREATE TABLE "public"."ship_fault_alarm_log" (
"id" SERIAL NOT NULL, -- SERIAL 会自动创建并关联序列
"description" varchar(255) COLLATE "pg_catalog"."default" NOT NULL,
-- 其他字段...
CONSTRAINT "ship_fault_alarm_log_pkey" PRIMARY KEY ("id")
);