Мы испытываем критическую и неожиданную проблему в нашей системе производства Spring Boot, поддерживаемой PostgreSQL. Несколько дней назад началась следующая ошибка в нескольких операциях сохранения сущностей: < /p>
ERROR: duplicate key value violates unique constraint "lifecycle_event_pkey"
Detail: Key (id)=(2914) already exists.
org.springframework.dao.DataIntegrityViolationException:
could not execute statement; SQL [n/a]; constraint [lifecycle_event_pkey];
nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement
< /code>
Это впервые появилось в методе транзакции, обрабатывающего действие по отслеживанию активов. Он использует Spring Data JPA с @transactional
и сохраняет сущности, расширяющие общий корень базовый класс. Автогенерировать идентификаторы через @GeneratedValue (стратегия = GenerationType.Identity)
Факты ключевых факторов:
Затронутые объекты все расширяют общий root , который определяет ID поэта Class = "Lang-Java PrettyPrint-Override">
SELECT setval('lifecycle_event_id_seq', (SELECT MAX(id) FROM lifecycle_event));
< /code>
< /li>
< /ul>
Однако это исправление реактивно. Теперь мы сосредоточены на определении того, что заставило последовательность отставать в первую очередь. Все эти таблицы простираются из одного и того же нанесенного нанесенного на карту суперкласс (Root< /code>), и все полагаются на PostgreSQL, чтобы автоматически генерировать первичные ключи. strategy
[*]Sequences were in sync until recently
[/list]
We've ruled out:
Suspected Cause
Статус < /th>
Примечания < /th>
< /tr>
< /thead>
ручные вставки с explicit id < /code> < /td>
не выполнены. /> < /tr>
Миграция данных или ETL < /td>
Миграция данных не проводилась в пораженных таблицах < /td>
< /td>
< /tr>
hibernate misconfigat Identity
без @genericgenerator или манипуляция с ручной последовательности
Замечания в таблице
none - ids не были непрерывными /> < /tr>
postgresql sequence coster /> возможный
, если кэш >, значения в памяти могут быть потеряны при сбое и не синхронизировать обратно в диск
вставьте откат во время транзакции перед NextVal
/>Especially since the error appeared in a method using @Transactional
Hibernate reused detached entity with existing id
Unlikely
No such logic is present in our service code
Concurrent app using same table with broken ID strategy
Unlikely
No evidence of conflicting ID generators across services
Given that no manual Вставки, миграции или изменения схемы были сделаны, и в данных таблицы не было пробелов, что может привести к неожиданному отстранению последовательности PostgreSQL, особенно при использовании: < /p>
Мы испытываем критическую и неожиданную проблему в нашей системе производства Spring Boot, поддерживаемой PostgreSQL. Несколько дней назад началась следующая ошибка в нескольких операциях сохранения сущностей: < /p> [code]ERROR: duplicate key value violates unique constraint "lifecycle_event_pkey" Detail: Key (id)=(2914) already exists.
org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; constraint [lifecycle_event_pkey]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement < /code> Это впервые появилось в методе транзакции, обрабатывающего действие по отслеживанию активов. Он использует Spring Data JPA с @transactional [/code] и сохраняет сущности, расширяющие общий корень базовый класс. Автогенерировать идентификаторы через @GeneratedValue (стратегия = GenerationType.Identity)
Факты ключевых факторов: [list] [*] Затронутые объекты все расширяют общий root , который определяет ID поэта Class = "Lang-Java PrettyPrint-Override">[code]@MappedSuperclass @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) public class Root {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id;
// Additional audit fields... } [/code]
[*] Один и тот же корень класс используется в нескольких модулях/службах
[*] Нет недавних развертываний или схемы (последнее развертывание было ~ 2 месяца назад)
[*] nemplaual nemplu Импорт был выполнен
[*] Идентификатор таблицы в столбце было [b] нет пробелов [/b] ([code]MAX(id)[/code] was continuous)
[*]The error appeared in a method annotated with @Transactional, and occurred during a saveAndFlush() operation
[*]The issue was resolved by syncing the sequence with: [code]SELECT setval('lifecycle_event_id_seq', (SELECT MAX(id) FROM lifecycle_event)); < /code> < /li> < /ul> Однако это исправление реактивно. Теперь мы сосредоточены на определении того, что заставило последовательность отставать в первую очередь. Все эти таблицы простираются из одного и того же нанесенного нанесенного на карту суперкласс (Root< /code>), и все полагаются на PostgreSQL, чтобы автоматически генерировать первичные ключи. strategy [*]Sequences were in sync until recently [/list] We've ruled out:
Suspected Cause Статус < /th> Примечания < /th> < /tr> < /thead>
ручные вставки с explicit id < /code> < /td> не выполнены. /> < /tr>
Миграция данных или ETL < /td> Миграция данных не проводилась в пораженных таблицах < /td> < /td> < /tr>
hibernate misconfigat Identity [/code] без @genericgenerator или манипуляция с ручной последовательности
Замечания в таблице none - ids не были непрерывными /> < /tr>
Дрифт размера распределения ([code]SEQUENCE[/code] стратегия) не применимо - используя идентификацию стратегия
конфликт общей последовательности имеет свою собственную последовательность (подтвержден PG_GET_SERIAL_SECENTENT )
postgresql sequence coster /> возможный , если кэш >, значения в памяти могут быть потеряны при сбое и не синхронизировать обратно в диск
вставьте откат во время транзакции перед NextVal
/>Especially since the error appeared in a method using @Transactional
Hibernate reused detached entity with existing id Unlikely No such logic is present in our service code
Concurrent app using same table with broken ID strategy Unlikely No evidence of conflicting ID generators across services
Given that no manual Вставки, миграции или изменения схемы были сделаны, и в данных таблицы не было пробелов, что может привести к неожиданному отстранению последовательности PostgreSQL, особенно при использовании: < /p> [list] [*][code]@GeneratedValue(strategy = GenerationType.IDENTITY)[/code] [*] a @mampedsuperclass с помощью table_per_class наследование [*] Метод, обернутый в @transactional [/list] Внутри известных случаев:
Мы испытываем критическую и неожиданную проблему в нашей системе производства Spring Boot, поддерживаемой PostgreSQL. Несколько дней назад началась следующая ошибка в нескольких операциях сохранения сущностей:
ERROR: duplicate key value violates...
Мы испытываем критическую и неожиданную проблему в нашей системе производства Spring Boot, поддерживаемой PostgreSQL. Несколько дней назад началась следующая ошибка в нескольких операциях сохранения сущностей:
ERROR: duplicate key value violates...
❓ Postgresql -последовательность за таблицами неожиданно в нескольких объектах - без ручных вставок, используя @generatedvalue (идентификация)
Мы испытываем критическую и неожиданную проблему в нашей системе производства Spring Boot, поддерживаемой...
Мы испытываем критическую и неожиданную проблему в нашей системе производства Spring Boot, поддерживаемой PostgreSQL. Несколько дней назад началась следующая ошибка в нескольких операциях сохранения сущностей:
ERROR: duplicate key value violates...
Мы испытываем критическую и неожиданную проблему в нашей системе производства Spring Boot, поддерживаемой PostgreSQL. Несколько дней назад началась следующая ошибка в нескольких операциях сохранения сущностей:
ERROR: duplicate key value violates...