PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Hibernate:Doppelter Schlüsselwert verstößt gegen eindeutige Einschränkung

Wenn Sie eine bigserial erstellen Spalte in Postgresql, erstellen tatsächlich eine Sequenz . Wenn Sie manuell einen ID-Wert von „1“ eingefügt haben, hat Postgresql die Sequenz nicht aktualisiert, um dies zu berücksichtigen. Hibernate lässt Postgresql die Sequenz verwenden, um die ID zu generieren, aber der erste erzeugte Wert ist „1“, was kollidiert. Der zweite Wert ist in Ordnung.

Wenn Sie das Problem verursacht haben, indem Sie hinter Hibernate gegangen sind und SQL direkt verwendet haben, sollten Sie es auf die gleiche Weise beheben:verwenden Sie ALTER SEQUENCE um den nächsten Wert einzustellen :

alter sequence basedesign_id_seq restart with 2;