2011-05-04 16 views
9

मैं कमांड लाइन के माध्यम से एक mysqldump फ़ाइल आयात करने की कोशिश कर रहा हूं, लेकिन एक त्रुटि प्राप्त करना जारी रखता हूं।लाइन 1153 पर माइस्क्ल त्रुटि: अज्ञात कमांड ''

mysql -u XXX -p database_name < database.sql 

यह एक छोटा सा हिस्सा लोड करता है और फिर अटक जाती है:

mysqldump -u XXX -p database_name > database.sql 

तो मैं के साथ फ़ाइल आयात करने की कोशिश: मैं का उपयोग कर मेरे दूसरे सर्वर से फ़ाइल फेंक दिया। त्रुटि मैं प्राप्त है:

ERROR at line 1153: Unknown command '\''. 

मैं के साथ फाइल में है कि रेखा की जाँच:

awk '{ if (NR==1153) print $0 }' database.sql >> line1153.sql 

और यह सिर्फ इतना है कि लाइन के लिए, आकार में 1 एमबी से अधिक होता है।

कोई विचार यहां क्या हो रहा है?

उत्तर

17

आपके डीबी में बाइनरी ब्लब्स हैं, अपने mysqldump कथन में --hex-blob जोड़ने का प्रयास करें।

+1

यह काम किया! बहुत बहुत धन्यवाद। – Chris

+2

मुझे एक ही समस्या है लेकिन - हेक्स-ब्लोब काम नहीं कर रहा है। कोई अन्य समाधान? thx – Jon

3

तुम्हें पता है क्या हो रहा है - आप अपने एसक्यूएल में एक अतिरिक्त एकल उद्धरण है हे

आप 'awk', तो आप शायद है 'vi' है, जो आसानी से अपने line1153.sql फ़ाइल खुलेगी है और आपको समस्या का कारण बनने वाले आपके डेटाबेस में मान ढूंढने की अनुमति देता है।

या ... लाइन शायद बड़ी है क्योंकि इसमें कई पंक्तियां हैं। आप mysqldump के --skip-extended-insert विकल्प का भी उपयोग कर सकते हैं ताकि प्रत्येक पंक्ति को एक अलग सम्मिलित कथन मिले।

शुभकामनाएं।

2

मुझे एक ही समस्या थी क्योंकि मेरे डेटाबेस में चीनी वर्ण थे। नीचे कुछ चीनी मंच से मैंने पाया और यह मेरे लिए काम किया।

mysql -u[USERNAME] -p[PASSWORD] --default-character-set=latin1 
[DATABASE_NAME] < [BACKUP_SQL_FILE.sql] 
0

यदि अन्य सभी विफल हो जाते हैं, तो आयात करने के लिए MySQLWorkbench का उपयोग करें। यह मेरे लिए एक ही समस्या हल हो गया।

1

मैं तुम्हें path\to\file.sql

के बजाय path/to/file.sql उपयोग करने की आवश्यकता इसके अलावा, database < path/to/file.sql किसी कारण से मेरे लिए काम नहीं किया लगता है - मैं use database; और source path/to/file.sql; का इस्तेमाल किया था।

+0

इस उत्तर के आधार पर परीक्षण मेरे लिए पुष्टि करता है कि यह ऐसे त्रुटि संदेशों की एक श्रृंखला का स्रोत था जो उत्पन्न हुआ जब मैंने MySQL CLI की Windows स्थापना पर d: \ path \ to \ file.sql का उपयोग किया, जिसने मुझे बहुत परेशान किया , क्योंकि यह एक टीई कमांड पर भी दिखाई देता है, जो आउटपुट पथ सेट करता है। मुझे विंडोज इंस्टॉलेशन पर सीएलआई में निर्दिष्ट किसी भी पथ के लिए समान धारणा है। –

0

मुझे हाल ही में एक ही समस्या थी जहां मैंने विंडोज मशीन पर एक एसक्यूएल डंप किया था और इसे एक लिनक्स मशीन पर स्थापित करने का प्रयास किया था। मैं बात करने के लिए सभी पाठ की प्रतिलिपि बनाने के लिए निम्न आदेश का इस्तेमाल किया मैं एक काफी बड़े एसक्यूएल फ़ाइल था और मेरी त्रुटि लाइन 3455360. हो रहा था, जहां मैं एक त्रुटि हो रही थी:

sed -n '1, 3455359p' < sourcefile.sql > destinationfile.sql

यह कॉपी किया सब अच्छा कोड में एक गंतव्य फ़ाइल। मैंने गंतव्य फ़ाइल की आखिरी कुछ पंक्तियों को देखा और देखा कि यह एक पूर्ण SQL कमांड था (अंतिम पंक्ति ';' के साथ समाप्त हुई) इसलिए मैंने अच्छा कोड आयात किया और कोई त्रुटि नहीं मिली।

मैंने फिर बाकी फाइल को देखा जो लगभग 20 लाइनें थीं।ऐसा लगता है कि निर्यात b/c मैं कोड के अंत में निम्नलिखित php कोड देखा पूरा कर लिया है नहीं हो सकता है:

Array 
(
    [type] => 1 
    [message] => Maximum execution time of 300 seconds exceeded 
    [file] => C:\xampp\htdocs\openemr\phpmyadmin\libraries\Util.class.php 
    [line] => 296 
) 

मैं हमलावर php कोड हटा दिया और डेटाबेस के बाकी आयात किया।

0

मेरे पास टेबल नामों में विशेष चरित्र था, जैसे _\ और यह तालिकाएं आयात करने का प्रयास करते समय त्रुटि देते हैं। मैंने \ को \\ को डंप किए गए एसक्यूएल में बदलकर इसे ठीक किया। मेरी मेज नाम जहां rate_\ की तरह और मैं इस आदेश का इस्तेमाल किया डंप की मरम्मत के लिए:

sed 's._\\._\\\\.g' dump.sql > dump2.sql 

मैं सभी बैकस्लैश की जगह नहीं किया था, क्योंकि मुझे यकीन है कि अगर वहाँ डेटाबेस है कि जगह नहीं होना चाहिए में कुछ बैकस्लैश कहीं है नहीं था।

तालिका नाम में विशेष वर्ण फ़ाइल नाम में साइन इन पर @ में परिवर्तित हो जाएंगे। http://dev.mysql.com/doc/refman/5.5/en/identifier-mapping.html