2010-04-28 14 views
7

नहीं है, इसलिए हमारा लक्ष्य वातावरण लिनक्स है, जो डिफ़ॉल्ट रूप से mysql केस-संवेदनशील बनाता है। मुझे पता है कि हम अपने लिनक्स पर्यावरण को low_case_table_names चर के साथ संवेदनशील नहीं बना सकते हैं, लेकिन हम नहीं करेंगे। हमारे पास मामला मेल नहीं मिला है क्योंकि हमारे देव रिग ओएसएक्स हैं, और MySQL वहां संवेदनशील नहीं है।क्या मैं फाइल सिस्टम पर MySQL तालिका नाम केस संवेदनशीलता को मजबूर कर सकता हूं जो केस संवेदनशील

क्या कोई तरीका है कि हम टेबल नामों को MySQL (5.0.83 यदि मायने रखता है) पर मेरे ओएसएक्स इंस्टॉलेशन पर केस सेंसिटिव होने के लिए मजबूर कर सकते हैं ताकि हम लिनक्स पर चल रहे एकीकरण सर्वर पर तैनाती से पहले टेबल नाम केस विसंगति प्राप्त कर सकें ?

उत्तर

-1

यहां करने के लिए सबसे अच्छी बात यह है कि आपके टेबल नाम ठीक करें ताकि कोई संघर्ष न हो। पूरी तरह से मामले से अलग करना एक बुरा विचार है, और भ्रम की ओर जाता है (जैसा कि आप शायद जानते हैं)।

लेकिन निर्माण के दौरान तालिका नामों के आस-पास एकल उद्धरण चिह्नों का उपयोग करने का प्रयास करें। यह विंडोज़ पर चल रहे क्वेरी ब्राउज़र के साथ SUSE/Linux/MySQL 5.0 पर काम करता है।

CREATE TABLE `MySchema`.`test` (
    `COMMENT` text 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 


CREATE TABLE `MySchema`.`Test` (
    `COMMENT` text 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

insert into MySchema.test values ('this is table test'); 
insert into MySchema.Test values ('this is table Test'); 


select * from MySchema.test; 
select * from MySchema.Test; 

क्या आप इसे विफल करना चाहते हैं यदि कोई गैर-केस संवेदनशील ग्राहक गलत केस का उपयोग कर तालिका का अनुरोध करता है? मेरा मानना ​​है कि यह विफल होना चाहिए यदि MySQL डेटाबेस लिनक्स पर चल रहा है।

चेक बाहर this link "एक उल्लेखनीय अपवाद मैक ओएस एक्स, जो यूनिक्स आधारित है, लेकिन एक डिफ़ॉल्ट फ़ाइल सिस्टम प्रकार (HFS +) है कि केस संवेदी नहीं उपयोग करता है। हालांकि है, मैक ओएस एक्स भी UFS की मात्रा, जो कर रहे हैं का समर्थन करता है किसी भी यूनिक्स के रूप में मामला संवेदनशील है। "

+1

हमारे तालिका नामों विरोध में नहीं हैं: /usr/local/Cellar/mysql/<version>/my.cnf

प्रश्नों के साथ टेबल अब केस संवेदनशील होना चाहिए। लेकिन कभी-कभी हमारे पास कोड होता है जो टेबल नामों को मिसापाइलाइज करता है, और डिफ़ॉल्ट ओएस एक्स फाइल सिस्टम की केस-असंवेदनशील प्रकृति का अर्थ है कि जब तक हम लिनक्स पर तैनात नहीं होते हैं तब तक हम बग नहीं देखते हैं। –

1

my.cnf में lower_case_table_names=0 सेट करें।

आप homebrew के माध्यम से स्थापित किया है, फ़ाइल यहाँ है: mysql> select count(*) from user; ERROR 1146 (42S02): Table 'xxx.user' doesn't exist mysql> select count(*) from User; +----------+ | count(*) | +----------+ | 1 | +----------+ 1 row in set (0.00 sec)

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