Liquibases Anweisung autoIncrement="true"
erzeugt serial
Spalte für PostgreSQL. Für serial
Spalte PostgreSQL erstellt eine Sequenz mit einem Namen wie tablename_colname_seq
. Standardspaltenwerte werden aus dieser Sequenz zugewiesen.
Aber wenn Sie explizit Fügen Sie einen Wert in die serielle Spalte ein, er wirkt sich nicht auf den Sequenzgenerator aus und sein nächster Wert ändert sich nicht. Es kann also einen doppelten Wert generieren, was genau in Ihrem Fall der Fall ist.
Um dies zu verhindern, nachdem Sie explizite Werte eingefügt haben, müssen Sie den aktuellen Wert eines Sequenzgenerators entweder mit ALTER SEQUENCE
ändern -Anweisung oder mit setval()
Funktion, z. B.:
ALTER SEQUENCE tablename_colname_seq RESTART WITH 42;
SELECT setval('tablename_colname_seq', (SELECT max(colname) FROM tablename));
Dies sollte das Problem beheben.