2009-05-19 11 views
16

में कॉलम नामों में हाइफ़ेंस इस प्रश्न का उत्तर पहले दिया जा सकता है लेकिन मुझे यह नहीं मिला।MySQL डीबी

मैं 2/3 वर्ष पुराना MySQL डेटाबेस का उपयोग कर रहा हूं जिसमें इसके कॉलम नामों में हाइफ़न है। जब मैं अपने जावा कोड से इन नामों का उपयोग करने का प्रयास करता हूं, तो नाम हाइफ़न पर टूट जाते हैं (उदाहरण के लिए एयर_पोर्ट हवा बन जाता है) और इस प्रकार नहीं मिलते हैं। मैंने अपने कोड में हाइफ़न को अंडरस्कोर में बदलने की कोशिश की और उम्मीद की कि डीबी उन्हें समान रूप से इलाज कर सकती है लेकिन यह काम नहीं करती है।

मैं हाइफ़न से कैसे बच सकता हूं या मैं इन कॉलम तक कैसे पहुंच सकता हूं? क्या यह चरित्र सेट का इस्तेमाल किया जा सकता है? बैक-टिक्स `

उत्तर

33

` भीतर नाम संलग्न है। हालांकि, मुझे लगता है कि यह डेटा का जिक्र है और कॉलम नाम नहीं है।

This कहता है "इसे मत करो।" यह नहीं पता कि यह कितना आधिकारिक है।

0

This entry MySQL मंच पर पता चलता है कि आप एक समस्या हो सकता है

4

क्या आपके कॉलम नामों में हाइफ़न (-) या अंडरस्कोर (_) है?

हाइफ़ेंस एक बड़ी समस्या है क्योंकि यदि आप चरम पर कॉलम नाम मैपिंग समाप्त करते हैं, तो अधिकांश भाषाएं चर नामों के अंदर हाइफ़न पसंद नहीं करती हैं। शायद आप जावा लाइब्रेरीज़ में से एक का उपयोग कर रहे हैं जो स्वचालित रूप से वेरिएबल्स या ऑब्जेक्ट्स जेनरेट करता है जिनके नाम कॉलम नामों पर आधारित होते हैं।

आपकी समस्या की प्रकृति पर निर्भर करता है, वहाँ अलग दृष्टिकोण की एक जोड़ी का उपयोग कर सकते हैं: ALTER तालिका का उपयोग कर अपने स्तंभों की

  1. नाम बदलें सब। सावधान रहें कि यह डेटाबेस पर निर्भर संदर्भित अखंडता या अन्य अनुप्रयोगों को प्रभावित कर सकता है। यदि आप नहीं जानते कि इसका क्या अर्थ है, तो ऐसा न करें।
  2. SQL दृश्य बनाएं जो आपको आवश्यक तालिकाओं को सरल बनाते हैं लेकिन "बेहतर" कॉलम नामों के साथ। यह बहुत ही कुशल नहीं है, लेकिन यह आपको जो चाहिए वह प्राप्त करने की अनुमति देगा।
  3. प्रश्नों के भीतर कॉलम का नाम बदलने के लिए अपने SELECT कथन चलाते समय AS कीवर्ड का उपयोग करें।

इनमें से कोई भी महान समाधान नहीं है, लेकिन उन्हें आपको प्रारंभ करना चाहिए। सौभाग्य!

2

डेटाबेस नामों में हाइफ़न भी अच्छे नहीं हैं। लेकिन आप बैकटिक चाल '

`name-with-hyphen` 
0

के साथ उनका उपयोग कर सकते हैं मुझे पूर्व-ca_db नामक एक डीबी बनाना था।

मैं

create database `pre-ca_db`; 

गुड लक के साथ समस्या को हल!

0

अपने कॉलम नामों में हाइफ़न का उपयोग करना बेहतर नहीं है। मुझे जॉइन स्टेटमेंट्स के साथ एक बड़ी समस्या का सामना करना पड़ा जहां हाइफ़न ने बड़ी परेशानी पैदा की - यहां तक ​​कि पीछे की टिकों में नाम से बचने से भी काम नहीं हुआ।

अंडरस्कोर का उपयोग करने के लिए कॉलम नामों को कनवर्ट करें - यह जाने का सबसे सुरक्षित तरीका है।

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

  • कोई संबंधित समस्या नहीं^_^