मैं उसी निराशाजनक मुद्दे में भाग गया हूं। कभी-कभी AS
कीवर्ड का अपना इच्छित प्रभाव होगा, लेकिन दूसरी बार ऐसा नहीं होगा। मैं इसे ठीक से काम करने के लिए शर्तों की पहचान करने में असमर्थ था।
संक्षिप्त उत्तर: (साइमन अर्बनेक (RJDBC के लिए पैकेज मेंटेनर), येव और सेबेस्टियन को धन्यवाद! लंबा उत्तर देखें। ) एक चीज जो आप आजमा सकते हैं वह है ?useOldAliasMetadataBehavior=true
का उपयोग करके अपना JDBC कनेक्शन खोलना। आपके कनेक्शन स्ट्रिंग में। उदाहरण:
drv <- JDBC("com.mysql.jdbc.Driver", "C:/JDBC/mysql-connector-java-5.1.18-bin.jar", identifier.quote="`")
conn <- dbConnect(drv, "jdbc:mysql://server/schema?useOldAliasMetadataBehavior=true", "username", "password")
query <- "SELECT `a` AS `b` FROM table"
result <- dbGetQuery(conn, query)
dbDisconnect(conn)
यह मेरे लिए काम करना समाप्त कर दिया! लंबे उत्तर . में चेतावनियों सहित अधिक विवरण देखें
लंबा उत्तर: मैंने सभी प्रकार की चीजों की कोशिश की, जिसमें विचार करना, प्रश्न बदलना, जॉइन स्टेटमेंट का उपयोग करना, जॉइन स्टेटमेंट का उपयोग न करना, ऑर्डर बाय और ग्रुप बाय स्टेटमेंट का उपयोग करना आदि शामिल हैं। मैं कभी भी यह पता लगाने में सक्षम नहीं था कि मेरे कुछ प्रश्न कॉलम का नाम बदलने में सक्षम थे। और अन्य नहीं थे।
मैंने पैकेज मेंटेनर (साइमन अर्बनेक) से संपर्क किया। यहां उन्होंने कहा है:
फिर उन्होंने सिफारिश की कि मैं यह सुनिश्चित करूँ कि मेरे पास MySQL के लिए नवीनतम JDBC ड्राइवर है। मेरे पास नवीनतम संस्करण था। हालांकि, यह मुझे सोच रहा था "शायद यह जेडीबीसी ड्राइवर के साथ एक बग है।" इसलिए, मैंने इसके लिए Google पर खोज की:mysql jdbc driver bug alias
।
इस क्वेरी का शीर्ष परिणाम bugs.mysql.com पर एक प्रविष्टि था। . येव, MySQL 5.1.22 का उपयोग करते हुए कहते हैं कि जब उन्होंने ड्राइवर संस्करण 5.0.4 से 5.1.5 में अपग्रेड किया, तो उनके कॉलम उपनाम ने काम करना बंद कर दिया। यह पूछे जाने पर कि क्या यह एक बग था।
सेबस्टियन ने उत्तर दिया, "नहीं, यह कोई बग नहीं है! यह ड्राइवर के बाद के सभी संस्करणों में व्यवहार का एक प्रलेखित परिवर्तन है।" और ?useOldAliasMetadataBehavior=true
. का उपयोग करने का सुझाव दिया , JDBC ड्राइवर के लिए दस्तावेज का हवाला देते हुए
।
चेतावनी व्याख्याता: JDBC ड्राइवर के लिए दस्तावेज़ कहता है कि
मेरे पास इसका पूरी तरह से शोध करने का समय नहीं है कि इसका क्या अर्थ है। दूसरे शब्दों में, मैं नहीं जानता कि useOldAliasMetadataBehavior=true
का उपयोग करने के सभी प्रभाव क्या हैं? हैं। अपने जोखिम पार इस्तेमाल करें। क्या किसी और के पास और जानकारी है?