Последовательность PostgreSQL внезапно за данные о таблице по нескольким объектам - без ручных вставок, без пробеловJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Последовательность PostgreSQL внезапно за данные о таблице по нескольким объектам - без ручных вставок, без пробелов

Сообщение Anonymous »

❓ Postgresql -последовательность за таблицами неожиданно в нескольких объектах - без ручных вставок, используя @generatedvalue (идентификация) < /h2>
Мы испытываем критическую и неожиданную проблему в нашей системе производства 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) < /code> < /li>
< /ul>

✅ Ключевые факты < /h3>
  • < /> Полево, что идентифицируется, что идентифицирует, что идентифицируется, что идентифицируется, что идентифицируется, что Code> Code> Code> Codes> Codes> Codes> CODE> CODE> CODE> CODE> CODE < /> < /> < /> < />. это: < /p>

    Код: Выделить всё

    @MappedSuperclass
    @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
    public class Root {
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    // Additional audit fields...
    }
    
  • Один и тот же класс root используется в нескольких модулях/услугах в производстве.
  • Нет недавних развертываний или изменений схемы (последнее развертывание было ~ 2 месяца назад). INSERT s или объемный импорт был выполнен на любых затронутых таблицах. был непрерывным).
  • Ошибка появилась в методе, аннотированном с помощью @Transactional , и произошла во время операции saveAndflush () . с: < /p>

    Код: Выделить всё

    SELECT setval('lifecycle_event_id_seq', (SELECT MAX(id) FROM lifecycle_event));
    
Однако это исправление Reactive . We're focused on identifying why this happened, as it has now occurred across multiple unrelated tables in the same project — all using this Root class structure.

🚫 This Kind of Issue Never Happened Before
Even though:

[*]The same Сервис и кодовая база использовались в течение нескольких месяцев (или лет) < /li>
Несколько сервисов, работающих одновременно с использованием одной и той же схемы и стратегии наследования < /li>
Ранее всегда были синхронизированы < /li>
< /ul>

🔍 Мы выходили: < /hr />
🔍. class="s-table-container">


Suspected Cause
Status
Notes




Manual Вставки с явным идентификатором < /code> < /td>
❌ < /td>
НЕТ таких операций выполнены < /td>
< /tr>

Migration или ETL < /td>
❌ < /td>

< /td>

< /td>
загружает < /td>
< /tr>

неправильная конфигурация Hibernate < /td>
❌ < /td>
с использованием стандартной идентификации < /code>; Нет @GenericGenerator < /code>, нет пользовательской логики идентификации < /td>
< /tr>

Запасы в таблице < /td>
❌ < /td>
ID непрерывного < /td>
< /tr>











SEQUENCE strategy)
❌
Not applicable — using IDENTITY


Shared sequence conflict
❌
Each table uses its own sequence (

Код: Выделить всё

pg_get_serial_sequence
confirms)




🧠 Current Hypotheses



возможность < /th>
вероятность < /th>
Notes < /th>
< /tr>
< /thead>


Последовательность Postgresql Cache. /> размер неизвестен; Кэш в памяти, возможно, был потерян до написания на диск < /td>
< /tr>

вставьте откат во время транзакции < /td>
⚠ возможна < /td>
, особенно в рамках @transactional < /code>; Последовательность может не продвигаться, если nextval () не достигнут


Hibernate повторный отдельный отдельный объект с существующим идентификатором
❌ ❌ TRD>
нет такого рисунка в Service Code в Service in Service Code в Service Code>
нет такого рисунка. />
Another app using different ID strategy
❌ Unlikely
All apps use the same base class and IDENTITY strategy




❓ Our Main Вопрос < /h3>

не дает ручных вставок, миграций или идентификационных пробелов: < /p>
, что может вызвать автоматическую последовательность Postgresql (

Код: Выделить всё

IDENTITY
) отставать от данных таблицы [/b], особенно в контексте:

Код: Выделить всё

@GeneratedValue(strategy = GenerationType.IDENTITY)
[*] a @mappedsuperclass используется несколькими объектами
@Transactional< /code> Методы службы с использованием saveandflush () < /code> < /li>
< /ul>
< /blockquote>

🔍 существует ли известные случаи, где: < /h3>

postgresql replests или restes или crashs и lose sequence cach cach>
an postgresql. прерывает транзакцию до значение последовательности продвинуто? />
Спасибо! 🙏

Подробнее здесь: https://stackoverflow.com/questions/795 ... ies-no-man
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»