सुनिश्चित करें कि डेटाबेस एक सुसंगत स्थिति में है।
मान लें कि आपने पिछले MySQL डेटाबेस से डेटा माइग्रेट नहीं किया है और आप विकास मोड में काम कर रहे हैं (उत्पादन मोड में नहीं), तो आपको डेटा को संरक्षित करने के बारे में चिंता करने की ज़रूरत नहीं है:
- अपने माइग्रेशन का नाम बदलकर
1.sqlकर दें . सिर्फ इसलिए कि आपने पिछले डेटाबेस में माइग्रेशन निष्पादित किया है, इसका मतलब यह नहीं है कि जब आप इसे पूरी तरह से नए डेटाबेस में निष्पादित करने जा रहे हैं तो यह दूसरा विकास है:नए डेटाबेस के लिए, यह अभी भी पहला है। - अपने प्राथमिक कुंजी कॉलम इस तरह घोषित करें:
id bigserial primary keyऔरconstraintको हटा दें । - सुनिश्चित करें कि आपके पास PostgreSQL में एक खाली डेटाबेस है। डेटाबेस को छोड़ें और इसे फिर से बनाएँ (
dropdb,createdb)। - अपना डेटाबेस माइग्रेशन चलाएँ और यह सुनिश्चित करने के लिए आउटपुट देखें कि माइग्रेशन निष्पादित किया गया था। देखें डेटाबेस के विकास को प्रबंधित करना ।
- PgAdmin या इसी तरह के किसी टूल का उपयोग करें जैसे कि एक्लिप्स के लिए टॉड एक्सटेंशन यह सत्यापित करने के लिए कि डेटाबेस संरचना सही ढंग से बनाई गई थी।
वैकल्पिक रूप से, आपको पता चल सकता है कि Flyway डेटाबेस माइग्रेशन के लिए अधिक व्यापक दृष्टिकोण प्रदान करता है। एक प्लगइन है प्ले फ्रेमवर्क के लिए।
अपवाद से बचने के लिए Error getting sequence nextval , इस तरह इकाई वर्ग की परिभाषाओं को ठीक से व्याख्या करें:
@Id
@SequenceGenerator(name="product_gen", sequenceName="product_id_seq", allocationSize=1)
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="product_gen")
@Column(name="id")
public Long getId() { return id; }
यह सुनिश्चित करने के लिए डेटाबेस का निरीक्षण करें कि sequenceName PostgreSQL द्वारा बनाए गए अनुक्रम का नाम है।
अधिक जानकारी के लिए देखें:
- ईबीन दिखता है Play Framework 2 में गलत अनुक्रम नाम के लिए
- JPA कॉन्फ़िगर करें PostgreSQL को प्राथमिक कुंजी मान उत्पन्न करने देने के लिए
- EJB3 JPA:@GeneratedValue के ज़रिए प्राथमिक कुंजी बनाने के 3 तरीके
- PersistenceException:अगली कड़ी पाने में त्रुटि
- प्ले फ्रेमवर्क:H2 इन-मेमोरी डेटाबेस का उपयोग करके अगली कड़ी अनुक्रम प्राप्त करने में त्रुटि
- एनोटेशन टाइप GenerateValue