2012-05-04 11 views
10

में विशेष वर्ण इस प्रकार मैं एक मेज बनायाMySQL तालिका नाम

INSERT INTO e! (showname, startDateTime, endDateTime) VALUES('E! News ', '2012-05-03 19:00:00', '2012-05-03 20:00:00') 

और यह तालिका नाम में ! के कारण त्रुटियों, मुझे लगता है कि ! mysql में एक विशेष चरित्र है। मैंने इसे बचने की कोशिश की लेकिन क्वेरी अभी भी विफल रही।

तो, क्या मेरे पास तालिका नाम में ! या & जैसे विशेष वर्ण हो सकते हैं? यदि हां, तो मुझे शायद उन्हें किसी भी तरह एन्कोड करना होगा?

धन्यवाद।

उत्तर

16

उद्धरण एक वापस टिक के साथ अपने अस्पष्ट या "विशेष" तालिका नाम:

INSERT INTO `e!` ... 

या बेहतर, टेबल नामों में विशेष वर्ण का उपयोग नहीं करते इस तरह की समस्याओं से बचने के लिए।

+0

@ peasant13337: exazactly सही जवाब giben रहे हैं। : डी –

+0

यह काम किया, धन्यवाद। – peasant13337

10

डॉक्स के अनुसार, आप नहीं कर सकते:

पहचानकर्ता आंतरिक रूप से यूनिकोड में बदल रही हैं।

  • गैर उद्धृत पहचानकर्ता में अनुमत वर्ण:: वे इन वर्ण हो सकते हैं ASCII: [0-9, az, AZ $ _] (मूल लैटिन अक्षर, अंक 0-9, डॉलर, अंडरस्कोर) विस्तारित : U + 0080 .. U + FFFF

  • अनुमति उद्धृत पहचानकर्ता में पात्रों पूर्ण यूनिकोड बेसिक बहुभाषी विमान (बीएमपी), शामिल U + 0000 को छोड़कर: ASCII: U + 0001 .. U + 007F विस्तारित: U +0080 .. यू + एफएफएफएफ

स्रोत: http://dev.mysql.com/doc/refman/5.5/en/identifiers.html

4

इस के साथ प्रयास करें:

CREATE TABLE IF NOT EXISTS `e!` (
`aa` int(11) unsigned NOT NULL auto_increment, 
`showName` TEXT NOT NULL default '', 
`startDateTime` DATETIME NOT NULL , 
`endDateTime` DATETIME NOT NULL , 
PRIMARY KEY (`aa`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 
0

आप चारों ओर ई बैक-टिक की जरूरत है!

इसके अलावा, आपके datetime के लिए datetime पर हल होने वाले डिफ़ॉल्ट मानों की आवश्यकता है।

1

यदि आप जो कुछ भी विशेष तालिका पहचानकर्ता के लिए आवश्यकताओं, इसका मतलब है कि है कि वहाँ कुछ अपने डेटाबेस वास्तुकला के साथ गलत और/या समझ डेटाबेस वास्तुकला के साथ है।

आप के बजाय मूर्ख पहचानकर्ता

+0

मैं निश्चित रूप से सहमत हूं कि टेबल नामों में अजीब पहचानकर्ताओं का उपयोग न करना बेहतर है, मुझे पता है कि मैं आसानी से किसी अन्य वैध स्ट्रिंग को विशेष रूप से मैप कर सकता हूं। – peasant13337

+0

एलओएल @ किसान 13337 आपको अंक नहीं मिला। उन में कोई * आवश्यकता नहीं होनी चाहिए, भले ही छिपी हुई हो या नहीं। आप इन पहचानकर्ताओं के उद्देश्य को समझ नहीं सकते –

-1

यह MySQL के लिए Object Names मानकों है लागू करने के बेहतर सही इन वास्तु गलतियों चाहते। इसके अनुसार आप "!" का उपयोग नहीं कर सकते तालिका नाम के हिस्से के रूप में प्रतीक।

+1

["एएससीआईआई एनयूएल (एक्स'00 ') को छोड़कर डेटाबेस या तालिका पहचानकर्ताओं में कोई भी चरित्र कानूनी है (https://dev.mysql.com/doc/refman/5.5 /en/identifier-mapping.html) –

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