2012-05-12 12 views
9

जब मैं Grails Database Migration Plugin का उपयोग करें और चलाने के एक dbm-gorm-diff (उदाहरण के लिए, स्प्रिंग सुरक्षा फेसबुक प्लगइन स्थापित करने के बाद) मैं जैसी समस्याओं हो रही किया गया है:Grails डाटाबेस माइग्रेशन प्लगइन मुद्दे

Error: Error executing SQL CREATE INDEX `FK609FD5A460CFCC39` ON `facebook_user`(`user_id`): Incorrect index name 'FK609FD5A460CFCC39' 

यह प्रश्न में सूचकांक की तरह दिखता है दोनों एक एफके बाधा है और फिर बाद में जेनरेट अपग्रेड स्क्रिप्ट में एक सूचकांक के रूप में पुन: उपयोग किया जाता है। अगर मैं नाम बदलता हूं, इस प्रकार डुप्लिकेट को हटा देता हूं, तो सब कुछ ठीक काम करता है। मैं MySQL का उपयोग कर रहा हूँ। क्या मुझसे कुछ गलत हो रही है?

धन्यवाद।

+0

क्या आप अभी तक प्लगइन का सफलतापूर्वक उपयोग कर रहे हैं? – David

+0

@ डेविड यह अभी भी मेरे लिए बहुत नया है। मैंने कुछ बुनियादी उन्नयन की कोशिश की और उन्होंने काम किया। – skaz

+0

मैं बस सोच रहा था कि अगर आपके पास 'dbcreate =" .. कुछ .. "है, तो आपके DataSource.groovy फ़ाइल में यह प्लगइन के साथ विवादित हो सकता है। लेकिन अगर आपने पहले ही अपग्रेड किया है जो कम संभावना है। – David

उत्तर

9

मुझे अभी पता चला है कि अगर मैं changelog.groovy को addForeignConstraint बनाने के बाद संपादित करता हूं, यह एक आकर्षण की तरह काम करता है। मुझे लगता है कि चेंजलॉग पीढ़ी स्क्रिप्ट में एक और समस्या है।

+1

अजीब, यह समाधान मेरे लिए काम नहीं करता था। मेरे पास एकाधिक 'addForeignConstraint' और एकाधिक 'createIndex' था। कुंजी बदलने से यह काम करने की अनुमति देता है ... पता नहीं है कि उसके बाद कोई प्रतिकूल प्रभाव होगा या नहीं। – Weezle

2

मुझे संदेह है कि यह वास्तव में MySQL से संबंधित है और प्लगइन के लिए नहीं। यह बग देखें: http://bugs.mysql.com/bug.php?id=55465

सेबेस्टियन का जवाब एक काम है।

1

this question/answer के अनुसार, MYSQL स्वचालित रूप से विदेशी कुंजी कॉलम को अनुक्रमित करता है। तो जब आप एक विदेशी कुंजी बाधा डालते हैं, तो आपको एक इंडेक्स को परिभाषित करने की आवश्यकता नहीं होती है। मैं डीबी माइग्रेशन प्लगइन का उपयोग करता हूं और डीबीएम-गॉर्म-डिफ उत्पन्न करता है जो विदेशी कुंजी के लिए 'इंडेक्स' प्रविष्टियों को हटा दें।

मुझे लगता है कि यह नाम बदलने से थोड़ा बेहतर है, क्योंकि यह संभवतः उसी कॉलम पर एक से अधिक इंडेक्स बनाता है जो संसाधनों की बर्बादी है।

संबंधित मुद्दे