Postgresql
ON CONFLICT ON CONSTRAINT 失敗 postgresql
INSERT INTO O_USER (ID, NAME, LASTNAME, EMAIL, USERNAME, PASSWD, DATE_REG, DATE_UPD, DATE_DEL, IS_DELETE, TIPO, FTP) VALUES (%s,%s,%s,%s,%s,%s,DEFAULT,NULL,NULL,%s,%s,%s) ON CONFLICT ON CONSTRAINT ux DO NOTHING;
使用者體驗約束:
CREATE UNIQUE INDEX ux ON public.o_user USING btree (email,username);
但在多次插入中有這個錯誤:
psycopg2.IntegrityError: duplicate key value violates unique constraint "o_user_username_key" DETAIL: Key (username)=(jferraro) already exists.
問題是什麼?
更新添加表資訊:
CREATE TABLE O_USER ( ID INTEGER PRIMARY KEY, NAME VARCHAR(30) NOT NULL, LASTNAME VARCHAR(30) NOT NULL, EMAIL VARCHAR(50) NOT NULL UNIQUE, USERNAME VARCHAR(30) NOT NULL UNIQUE, PASSWD VARCHAR(30) NOT NULL, DATE_REG DATE DEFAULT NOW(), DATE_UPD DATE, DATE_DEL DATE, IS_DELETE NUMERIC NOT NULL, TIPO VARCHAR(10) NOT NULL, FTP VARCHAR(30) NOT NULL, CONSTRAINT DEL CHECK (IS_DELETE IN ('0','1')), CONSTRAINT FK_FTP FOREIGN KEY (FTP) REFERENCES FTP_USERS(FTP_USER), CONSTRAINT UX UNIQUE (EMAIL,USERNAME), CONSTRAINT TYP CHECK (TIPO IN ('ADMIN','STANDARD')) );
更新解決了問題:問題是我聲明了兩種不同的模式來製作唯一的電子郵件和使用者名,為了解決這個問題,我刪除了 collums 附近的唯一併且只對電子郵件和使用者名使用唯一約束“UX”。感謝大家的支持。
這:
EMAIL VARCHAR(50) NOT NULL UNIQUE, USERNAME VARCHAR(30) NOT NULL UNIQUE,
除了您的其他約束之外,還使兩者都
USERNAME
如果只有USERNAME
是唯一的,UNIQUE
請從列定義中刪除。