Postgresql -Sequenz plötzlich hinter Tabellendaten über mehrere Entitäten hinweg - keine manuellen Einfügungen, keine LüJava

Java-Forum
Anonymous
 Postgresql -Sequenz plötzlich hinter Tabellendaten über mehrere Entitäten hinweg - keine manuellen Einfügungen, keine Lü

Post by Anonymous »

❓ PostgreSQL -Sequenz hinter Tabellendaten unerwartet über mehrere Entitäten hinweg - keine manuellen Einfügungen, die @GeneratedValue (Identität) < /H2>
Wir haben ein kritisches und unerwartetes Problem in unserem von Postgresql unterstützt. Vor ein paar Tagen wurde der folgende Fehler in mehreren Entitätsvorgängen aufgetaucht: < /p>

Code: Select all

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>
Dies erschien zunächst in einer Transaktionsdienstmethode, um eine Asset-Tracking-Aktion zu verarbeiten. Es verwendet Springdaten JPA mit @Transactional 
und speichert Entitäten, die eine gemeinsame Stammverzeichnis Basisklasse erweitern. automatische Generate-IDs über @generatedValue (Strategie = GenerationType.identity) < /code> < /li>
< /ul>

✅ Schlüsselfakten < /h3>
  • Dies: < /p>

    Code: Select all

    @MappedSuperclass
    @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
    public class Root {
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    // Additional audit fields...
    }
    
  • Die gleiche Root wird in mehreren Modulen/Diensten in der Produktion verwendet. oder Massenimporte wurden in betroffenen Tabellen ausgeführt.

    Code: Select all

    MAX(id)
    war kontinuierlich). />

    Code: Select all

    SELECT setval('lifecycle_event_id_seq', (SELECT MAX(id) FROM lifecycle_event));
    
Diese Fix ist jedoch reaktiv . Wir konzentrieren uns darauf, zu identifizieren, warum dies geschah < /strong>, da es jetzt in mehreren nicht verwandten Tabellen in demselben Projekt aufgetreten ist. Service und Codebasis werden seit Monaten (oder Jahren) verwendet. class = "S-table-container">


Verdacht auf < /th>
Status < /th>
Noten < /th>

< /thead>


< /tr>

Hibernate -Misskonfiguration < /td>
❌ < /td>
Verwenden von Standardidentität < /code>; no @GenericGenerator, no custom ID logic


Gaps in the table
❌
IDs were continuous


Allocation size drift (

Code: Select all

SEQUENCE
Strategie)
❌
Nicht anwendbar - mit Identität


gemeinsamer Sequenzkonflikt verwendet.

Code: Select all

pg_get_serial_sequence< /code> bestätigt) < /td>
< /tr>
< /tbody>
< /table> < /div>

 🧠 aktuelle aktuelle Hypothes < /h3>
Possibility
Likelihood
Notes




PostgreSQL sequence cache loss after crash/restart
⚠️ Possible
CACHE
Größe unbekannt; In-Memory-Cache ist möglicherweise vor dem Schreiben auf Festplatten < /td>
< /tr>

Rollback während der Transaktion < /td>
⚠️ mögliches < /td>
insbesondere plausibel unter @transactional < /td>; Die Sequenz wird möglicherweise nicht voranschreiten, wenn NextVal () nicht erreicht wurde. />
Another app using different ID strategy
❌ Unlikely
All apps use the same base class and IDENTITY strategy




❓ Our Main Frage < /h3>

Angesichts der manuellen Einfügungen, Migrationen oder ID-Lücken: < /p>
Was kann nach der automatischen Sequenz von PostgreSQL (automatisch generierte Sequenz (Sequenz) verursachen (

Code: Select all

IDENTITY
) hinter den Tabellendaten [/b], insbesondere im Kontext von:
  • Code: Select all

    @GeneratedValue(strategy = GenerationType.IDENTITY)
  • a @mappedsuperClass verwendet von mehreren Entitäten
  • Code: Select all

    @Transactional
    service methods using saveAndFlush()

🔍 Are there known edge cases where:

[*]PostgreSQL restarts or crashes and loses sequence cache state?
An exception unterbricht eine Transaktion vor Der Sequenzwert ist erweitert? />
Danke! 🙏

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post