23505: unique_violation
PostgreSQLЧто это значит?
Вставленная или обновлённая строка нарушает ограничение UNIQUE или PRIMARY KEY; такое значение уже существует в таблице.
Почему возникает?
Повторная вставка с тем же уникальным ключом, ввод дублирующихся данных в уникальный столбец, отставание значения последовательности из-за ручных вставок или два параллельных запроса, вставляющих один и тот же ключ.
Как исправить
Имя ограничения и значение ключа в деталях ошибки показывают, какая строка конфликтует. Чтобы обновить существующую строку, используйте INSERT ... ON CONFLICT (my_column) DO UPDATE или DO NOTHING. Поиск дубликатов: SELECT my_column, COUNT(*) FROM my_table GROUP BY my_column HAVING COUNT(*) > 1. Если последовательность отстала: SELECT setval('seq_name', (SELECT MAX(id) FROM my_table)).