Instruction de Liquibase autoIncrement="true"
génère serial
colonne pour PostgreSQL. Pour serial
colonne PostgreSQL créera une séquence avec un nom comme tablename_colname_seq
. Les valeurs de colonne par défaut seront attribuées à partir de cette séquence.
Mais quand vous explicitement insérez une valeur dans la colonne série, cela n'affecte pas le générateur de séquence et sa valeur suivante ne changera pas. Il peut donc générer une valeur en double, ce qui est exactement votre cas.
Pour éviter cela après avoir inséré des valeurs explicites, vous devez modifier la valeur actuelle d'un générateur de séquence soit avec ALTER SEQUENCE
instruction ou avec setval()
fonction, par exemple :
ALTER SEQUENCE tablename_colname_seq RESTART WITH 42;
SELECT setval('tablename_colname_seq', (SELECT max(colname) FROM tablename));
Cela devrait résoudre le problème.