Liquibase's instructie autoIncrement="true"
genereert serial
kolom voor PostgreSQL. Voor serial
kolom PostgreSQL maakt een reeks met een naam als tablename_colname_seq
. Standaardkolomwaarden worden uit deze reeks toegewezen.
Maar wanneer u expliciet voeg een waarde in de seriële kolom in, dit heeft geen invloed op de sequentiegenerator en de volgende waarde zal niet veranderen. Het kan dus een dubbele waarde genereren, wat precies jouw geval is.
Om dit te voorkomen nadat u expliciete waarden heeft ingevoerd, moet u de huidige waarde van een sequentiegenerator wijzigen met ALTER SEQUENCE
statement of met setval()
functie, bijv.:
ALTER SEQUENCE tablename_colname_seq RESTART WITH 42;
SELECT setval('tablename_colname_seq', (SELECT max(colname) FROM tablename));
Dit zou het probleem moeten oplossen.