2012-05-03 23 views
7

में कॉलिस्ट और टेबल नाम से कॉलम और टेबल नाम से मैपिंग के नियम क्या हैं, मुझे मौजूदा (MySQL) डीबी के साथ काम करने की आवश्यकता है, जहां तालिकाओं और कॉलम के नाम पहले ही परिभाषित किए गए हैं।डीबी

अगर मैं दस्तावेज़ीकरण को सही ढंग से समझता हूं (और मुझे इस विषय पर अच्छा दस्तावेज नहीं मिला, तो लिंक की अत्यधिक सराहना की जाएगी), तालिका के नाम PersistIdentity से संबंधित हैं, और इसलिए एक पूंजी पत्र से शुरू होना चाहिए (जो नहीं है जिस मामले में मुझे सामना करना पड़ रहा है)।

कॉलम नाम, हालांकि, स्वचालित रूप से गैर-पूंजीकृत होते हैं (कम से कम यह है कि कोड स्निपेट में यसोड पुस्तक, निरंतर अध्याय में निहित है, जो घोषणाओं से स्वचालित रूप से उत्पन्न कोड का वर्णन करता है), इसलिए डीबी में कॉलम के साथ शुरू होना चाहिए एक लोअरकेस अक्षर।

क्या ऊपर वास्तव में विवरण सही है?

क्या मैं विशेष रूप से फ़ील्ड में पहचान और कॉलम के लिए तालिकाओं के मैपिंग को नियंत्रित कर सकता हूं? यदि नहीं तो नामकरण के लिए नियम स्वचालित रूप से लागू होते हैं? इसलिए कौन से नाम वर्जित हैं?

इसके अलावा, फ़ील्ड में से एक VARCHAR (30) है। मैं इसे लगातार कैसे संवाद कर सकता हूं? यह वर्तमान में शिकायत (Yesod devel के माध्यम से) कि:

errMessage = "ब्लॉब/पाठ स्तंभ 'my_field' एक कुंजी लंबाई बिना चाबी विनिर्देश में प्रयोग किया जाता"}

कौन सा स्वतः माइग्रेशन का परिणाम है (जो मैं शायद वैसे भी अक्षम होना चाहिए)। हालांकि, अगर मैं एक बाध्य VARCHAR फ़ील्ड घोषित करना चाहता हूं - क्या मैं इसे लगातार और उसके ऑटो-माइग्रेशन टूल के माध्यम से कर सकता हूं?

धन्यवाद,

उत्तर

6

मैं MySQL बैकएंड पर एक अधिकार नहीं हूँ, लेकिन IIRC (और कोड के आधार पर), तो आपको maxlen=... विशेषता का उपयोग करके अधिकतम लंबाई को नियंत्रित कर सकते हैं। इसी तरह, sql=... विशेषता का उपयोग करके डेटाबेस में फ़ील्ड के नाम का प्रत्यक्ष नियंत्रण हो सकता है। तो, उदाहरण के लिए, निम्नलिखित काम कर सकते हैं:

Person sql=people 
    name Text sql=full_name maxlen=40 
    age Int 

मैं भी सहमत हैं कि आप automigration कोड यदि आप एक पूर्व मौजूदा स्कीमा साथ काम कर रहे अक्षम करना चाहिए।

+0

धन्यवाद, मैंने यह भी देखा कि निरंतर दस्तावेज (यसोड पुस्तक में) ने मेरे प्रश्न (एसक्यूएल का उपयोग करके फ़ील्ड नाम निर्दिष्ट करने के बारे में) का जवाब दिया था, इसलिए उस भाग की अनावश्यकता के लिए खेद है। –