2009-06-24 6 views
13

मुझे कोई आउटपुट उत्पन्न करने के लिए निम्न कोड प्राप्त नहीं हो सकता है। MySQL उपयोगकर्ता में "सभी" अनुदान स्तर है,/tmp लिखने योग्य है, क्वेरी एक परिणाम सेट देता है।MySQL आउटफाइल/tmp कोई आउटपुट में चयन करें

mysql> SELECT field FROM test_table WHERE condition='test' 
    -> INTO OUTFILE '/tmp/test.csv' 
    -> FIELDS TERMINATED BY ',' 
    -> ENCLOSED BY '"' 
    -> LINES TERMINATED BY '\n'; 
Query OK, 1 row affected (0.00 sec) 

mysql> 
[1]+ Stopped     mysql 
[[email protected] ~]# cat /tmp/test.csv 
cat: /tmp/test.csv: No such file or directory 

क्या मुझे विफलता के मामले में MySQL से अलग आउटपुट देखना चाहिए?

क्या मैं "1 पंक्ति प्रभावित" से अधिक परिणाम सत्यापित कर सकता हूं?

+0

कोई चयन कथन कुछ भी क्यों प्रभावित करेगा? – futureelite7

+0

संभवतः यह चयन के बजाय आउटफाइल फ़ंक्शन को संदर्भित करता है। – Andy

उत्तर

17

आउटफाइल क्लॉज द्वारा उत्पन्न फ़ाइलें MySQL सर्वर होस्ट पर बनाई गई हैं। कृपया सुनिश्चित करें कि आप mysql सर्वर होस्ट पर देख रहे हैं क्योंकि ऐसा लगता है कि आप क्लाइंट होस्ट पर हैं जो संभवतः MySQL सर्वर होस्ट नहीं है।

इस बारे में दस्तावेज़ीकरण के लिए आउटफाइल के बारे में अनुभाग में http://dev.mysql.com/doc/refman/5.0/en/select.html देखें।

+0

धन्यवाद दीपिन, आप सही हैं कि यह डीबी सर्वर नहीं है। बहुत धन्यवाद – Andy

+0

कोई समस्या नहीं। मैं खुशी से मदद कर सकता है। चीयर्स! – Dipin

+0

दीपिन ने मुझे बस रात में अपना सिर मारने से बचाया। धन्यवाद! – jerrygarciuh

0

लगता है जैसे आप फ़ाइल अनुमति समस्या में भाग ले रहे हैं। सुनिश्चित करें कि उपयोगकर्ता: समूह जो mysqld के अंतर्गत चल रहा है, में adtqute को /tmp/test.csv

पर लिखने की अनुमति है, सर्वर डिमन/फ़ाइल अनुमति स्वाद की एक पूरी किस्म है जो समस्या को हल करेगी। संभवतः यूनिक्स आधारित, आप कर सकते हैं: chgp mysqldGROUP/tmp

लेकिन यह इतना आसान लगता है - आपका सर्वर एक निश्चित तरीके से कॉन्फ़िगर किया गया है, इसलिए आप इसे अनुकूलित करते हैं। MySQL प्रक्रिया वास्तव में केवल कुछ हद तक स्थानों से पढ़ने/लिखने में सक्षम होना चाहिए।

10

मैं फेडोरा 17 में इस समस्या से आया और यह systemd के कारण हुआ था। मुझे लगता है कि साझा करना अच्छा है।

mysql> select * into outfile '/tmp/z1' from t1; 
Query OK, 673 rows affected (0.01 sec) 
mysql> select * into outfile '/tmp/z2' from t1; 
Query OK, 673 rows affected (0.01 sec) 
mysql> select * into outfile '/tmp/z1' from t1; 
ERROR 1086 (HY000): File '/tmp/z1' already exists 
mysql> Bye 

# cat /tmp/z1 
cat: /tmp/z1: No such file or directory 
# ls -d systemd-* 
/tmp/systemd-private-AQEueG 
/tmp/systemd-private-AuCNDY 
/tmp/systemd-private-TOMNxZ 
/tmp/systemd-private-UacrpE 
/tmp/systemd-private-yal7lQ 
/tmp/systemd-private-ZlRJeN 
# ls /tmp/systemd-private-TOMNxZ 
z1 z2 

अपराधी /usr/lib/systemd/system/mysqld.service में था।

# Place temp files in a secure directory, not /tmp 
PrivateTmp=true 

this blog पर धन्यवाद, मुझे सुराग मिला।

+0

साझा करने के लिए धन्यवाद – blissini

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