SQL डंप से डेटाबेस को पुनर्स्थापित करते समय बाइनरी मोड सक्षम करें


96

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

$ >mysql -u root -p -h localhost -D database -o < dump.sql
ERROR: ASCII '\0' appeared in the statement, but this is not allowed unless option --binary-mode is enabled and mysql is run in non-interactive mode. Set --binary-mode to 1 if ASCII '\0' is expected. Query: 'SQLite format 3'.

मैं --binary-modeini फ़ाइल में डालने की कोशिश की है, लेकिन यह अभी भी वही त्रुटि देता है। मुझे क्या करना चाहिए? कृपया मदद करे।

अपडेट करें

जैसा कि निक ने अपनी टिप्पणी में सुझाव दिया था, $ > mysql -u root -p -h localhost -D database --binary-mode -o < dump.sqlलेकिन मैंने कोशिश की, लेकिन यह मुझे दिया ERROR at line 1: Unknown command '\☻'. यह एक 500 एमबी डंप फ़ाइल है, और जब मैं जीवीआईएम का उपयोग करके इसकी सामग्री देखता हूं, तो मैं देख सकता हूं कि यह अभिव्यक्ति और डेटा है जो समझ में नहीं आता है।


mysql -u root -p -h localhost -D database --binary-mode -o <dip.sql
Nick

यह पंक्ति 1 में ERROR देता है: अज्ञात कमांड '\'।
user1434997

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

जवाबों:


217

फ़ाइल को अनज़िप करें, और उसके बाद फिर से आयात करें।


12
प्रतिभा। धन्यवाद!
klm123

2
क्या आपका मतलब है ज़िप और फिर अनज़िप?
1986 में J86

13
यह मेरे लिए कैसे काम किया है, db.sql.gz को अनज़िप करें, आपको db.sql मिलेगा, इसे फिर से नाम बदलकर db.sql.gz करें, इसे ज़िप न करें, बस इसका नाम बदलें, फिर unzip को db.sql फिर से करें और अब आपको आयात करने के लिए सही फ़ाइल मिलेगी।
MotsManish

@MotsManish गंभीरता से? मुझे लगा कि यह एक मजाक था। मैं इसे एक शॉट देता हूं और देखता हूं कि क्या काम करता है।
जोशुआ पिंटर

3
चेहरा हथेली face Ramb palm♀️🤦♀️🤦♀️🤦♀️🤦🤦
रामबातिन

53

मैं डंप फ़ाइल को पुनर्स्थापित करने वाली खिड़कियों में एक ही समस्या को पूरा करता हूं। मेरी डंप फ़ाइल विंडो शक्तियां और mysqldump के साथ बनाई गई थी:

mysqldump db > dump.sql

समस्या पॉवरशेल के डिफ़ॉल्ट एन्कोडिंग से आती है UTF16। इसमें गहराई से देखने के लिए, हम GNU की "फाइल" उपयोगिता का उपयोग कर सकते हैं, और यहाँ एक विंडोज़ संस्करण मौजूद है
मेरी डंप फ़ाइल का आउटपुट है:

लिटिल-एंडियन यूटीएफ -16 यूनिकोड पाठ, बहुत लंबी लाइनों के साथ, सीआरएलएफ लाइन टर्मिनेटर के साथ।

फिर कोडिंग सिस्टम के रूपांतरण की आवश्यकता है, और ऐसा करने के लिए विभिन्न सॉफ़्टवेयर हैं। उदाहरण के लिए emacs में,

M-x set-buffer-file-coding-system

तब इनपुट आवश्यक कोडिंग सिस्टम जैसे कि utf-8।

और भविष्य में, बेहतर mysqldump परिणाम के लिए, उपयोग करें:

mysqldump <dbname> -r <filename>

और फिर आउटपुट को mysqldumpस्वयं द्वारा नियंत्रित किया जाता है लेकिन पावरशेल के पुनर्निर्देशन को नहीं।

संदर्भ: /dba/44721/error-ORE-restoring-a-database-from-an-sql-dump


mysqldump <dbname> -r <filename> Windows या DOS सिस्टम का उपयोग करने वाला कोई भी व्यक्ति इसका समाधान है। UTF-8 फ़ाइल रूपांतरण एक विकर्षण है। -R विकल्प का उपयोग करें, जो आउटपुट को फाइलनाम पर निर्देशित करता है और CRLF कैरिज रिटर्न लाइनफीड (\ r \ n) को हैंडल करता है जो विंडोज़ फाइलों में डालता है, यह वह जगह है जहाँ समस्या है। उत्कृष्ट समाधान के लिए धन्यवाद!
तीमुथियुस LJ स्टीवर्ट

4
प्रैक्टिकल नोट पर, मैंने Pephell में फ़ाइल को बनाने के बाद इसे उत्पन्न किया, नोटपैड ++ का उपयोग करके उत्पन्न फ़ाइल को UTF-8 में परिवर्तित कर दिया।
पीटर माजिद

यह उत्तर, यदि मैंने नहीं खोदा था, तो मुझे सही उत्तर की खोज करने के कुछ घंटों की बचत होगी। काश मैं एक से अधिक बार उत्थान कर पाता।
sam452

मैंने @PeterMajeed जैसा ही किया। नोटपैड ++ के साथ एक त्वरित कन्वर्ट-एंड-सेव ने मुझे एक मौजूदा फ़ाइल को पुनर्स्थापित करने की अनुमति दी
स्टीफन आर

18

विंडोज मशीन में, कृपया पूर्ववर्ती चरणों का पालन करें।

  1. नोटपैड में फ़ाइल खोलें।
  2. Save as पर क्लिक करें
  3. UTF-8 एनकोडिंग प्रकार का चयन करें।

अब अपने डीबी स्रोत।


यह मेरे लिए SQL बैकअप-फ़ाइल के लिए काम करता है जो Powershell के माध्यम से mysqldump चलाकर बनाई गई थी। पॉवशेल आउटपुट UTF-16 था। UTF-8 में परिवर्तन करने से समस्या हल हो गई और मुझे बैकअप फ़ाइल से अपने detabase को पुनर्स्थापित करने की अनुमति मिली।
हैरी मंथिस

9

अपनी फ़ाइल को Tar संग्रहण उपकरण के साथ निकालें। आप इसे इस तरह से उपयोग कर सकते हैं:

tar xf example.sql.gz

1
यह मेरे लिए जवाब था। सबसे पहले, मैंने गनजिप किया ।sql.gz फ़ाइल को आयात करते समय "बाइनरी" त्रुटि हुई। फ़ाइल को टार / gzipped किया गया था, इसलिए मुझे पहले फ़ाइल को xvf करना पड़ा फिर उसने मुझे इसे आयात करने दिया।
सीनाबेदेन

8

क्या आपने नोटपैड ++ (या किसी अन्य संपादक) में खोलने और हमें यूटीएफ -8 में परिवर्तित / सहेजने की कोशिश की है?

देखें: नोटपैड ++ एएनएस इनकोडेड फ़ाइल को यूएफ -8 में परिवर्तित कर रहा है

एक और विकल्प हो सकता है कि टेक्स्टव्रेनल का उपयोग फ़ाइल को खोलने और सहेजने के लिए UTF-8 के रूप में किया जाए: http://www.barebones.com/products/textwrangler/


3
धन्यवाद। इसने मेरे लिए चाल चली। नोटपैड + में फ़ाइल खोलें। एनकोडिंग> कन्वर्ट करने के लिए UTF 8.
अभिजीत नागरे

फ़ाइल आकार में महत्वपूर्ण परिवर्तन को नोट करने के बाद आप utf-8 एन्कोडिंग के साथ मौजूदा .sql फ़ाइल को 'सेव' करें! दी गई फ़ाइल की तुलना में आकार का लगभग आधा। मेरे मामले में mysqldump को Windows Power Shell का उपयोग करके लिया गया, उस प्रोग्राम ने एन्कोडिंग को गड़बड़ कर दिया।
tusar

6

mysqldumpविंडोज पॉवरशेल पर चलने के बाद मुझे एक बार यह त्रुटि हुई, जैसे:

mysqldump -u root p my_db --no-data --no-create-db --no-create-info --routines --triggers --skip-opt --set-gtid-purged=OFF > db_objects.sql

मैंने जो किया उसे इस (पाइप-सेट-कंटेंट के बजाय पाइप) में बदल दिया:

mysqldump -u root p my_db --no-data --no-create-db --no-create-info --routines --triggers --skip-opt --set-gtid-purged=OFF | Set-Content db_objects.sql

और समस्या दूर हो गई!


मुझे mysqldump मिल रहा है: ग़लती से 32 मिल गए
Radu

देखें कि क्या यह धागा आपकी मदद करने में सक्षम हो सकता है: stackoverflow.com/questions/22288271/…
Ifedi Okonkwo

धन्यवाद। मुद्दा यह था कि मैंने एक पुराने mysql सर्वर पर phpmyadmin के पुराने संस्करण के साथ db निर्यात किया। निश्चित रूप से क्यों नहीं, लेकिन आधे डेटाबेस को स्पष्ट पाठ और दूसरे आधे gzip-ed में निर्यात किया गया था।
रादु

5

आपकी डंप हो सकती है। आपकी फ़ाइल की शुरुआत में एससीएल कचरा पात्र है या शुरुआत में एक खाली लाइन है।


5

यदि आपके पास पर्याप्त स्थान नहीं है या आप इसे डिकम्प्रेस करने में समय बर्बाद नहीं करना चाहते हैं, तो इस कमांड को आज़माएं।

gunzip < compressed-sqlfile.gz | mysql -u root -p

अपने संपीड़ित फ़ाइल नाम के साथ संकुचित-sqlfile.gz को बदलना न भूलें।

.gz पुनर्स्थापना मैं ऊपर दिए गए आदेश के बिना काम नहीं करेगा।


3

इसकी आपको डंप फ़ाइल दर्ज करनी चाहिए। एसक्यूएल समस्या। सीक्वल प्रो अपनी फ़ाइल को इकोडिंग की जाँच करें। यह आपके डंप में कचरा पात्र होना चाहिए। एससीएल।


3

मुझे वही समस्या थी, लेकिन पता चला कि डंप फ़ाइल वास्तव में एक MSSQL सर्वर बैकअप था, MySQL नहीं।

कभी-कभी विरासत बैकअप फ़ाइलें हम पर चालें खेलती हैं। अपनी डंप फ़ाइल की जाँच करें।

टर्मिनल विंडो पर:

~$ cat mybackup.dmp 

परिणाम था:

TAPE??G?"5,^}???Microsoft SQL ServerSPAD^LSFMB8..... etc...

बिल्ली कमांड को संसाधित करने से रोकने के लिए:

CTRL + C


1

आप जिस फ़ाइल को आयात करने का प्रयास कर रहे हैं, वह ज़िप फ़ाइल है। फ़ाइल को अनज़िप करें और फिर से आयात करने का प्रयास करें।


1

Linux के अंतर्गत अपनी फ़ाइल को गनज़िप का उपयोग करके अनज़िप करें अपने का उपयोग करके अपने अनज़िप sql फ़ाइल को संपादित करें

vi अनज़िपस्क्लेफ़ाइल.एसक्यूएल

Esc dd के साथ पहली बाइनरी लाइन निकालें फ़ाइल के निचले भाग पर जाएं esc शिफ्ट जी के साथ अंतिम बाइनरी लाइन को हटाएं dd के साथ फाइल esc x को सहेजें: फिर mysql के साथ reimport करें:

mysql -u उपयोगकर्ता नाम -p new_database <unzipsqlfile.sql

मैंने एक जेटबैकअप cpanel mysql बैकअप से 20go sql फ़ाइल के साथ प्रदर्शन किया। बड़ी फ़ाइलों के लिए कार्य करने वाले vi की प्रतीक्षा करें


0

आपकी फ़ाइल केवल .sql एक्सटेंशन होनी चाहिए, (.zip, .gz .rar) आदि का समर्थन नहीं करेगा। उदाहरण: डंप। एसक्यूएल


0

त्रुटि को ठीक करने के लिए आप इसका उपयोग कर सकते हैं:

zcat {address_sql_database(.tar.gz)} | mysql -u root -p {database_name} --binary-mode

2
क्यों? कृपया बताएं कि यह प्रश्न कैसे प्रस्तुत करता है।
युनानोस्क

0

मुझे पता है कि मूल पोस्टर प्रश्न हल किया गया था, लेकिन मैं Google के माध्यम से यहां आया था, और विभिन्न उत्तरों ने अंततः मुझे यह पता लगाने के लिए प्रेरित किया कि मेरी एसक्यूएल को आयात करने के लिए उपयोग किए गए की तुलना में एक अलग डिफ़ॉल्ट चारसेट के साथ डंप किया गया था। मुझे मूल प्रश्न के समान त्रुटि मिली, लेकिन जैसे ही हमारे डंप को एक अन्य MySQL क्लाइंट में पाइप किया गया, हम इसे किसी अन्य टूल के साथ खोलने और इसे अलग तरीके से सहेजने के मार्ग पर नहीं जा सके।

हमारे लिए, समाधान --default-character-set=utf8mb4विकल्प के रूप में निकला , जिसका उपयोग कॉल के mysqldumpसाथ-साथ कॉल के माध्यम से करने के लिए किया गया mysql। बेशक, एक ही समस्या का सामना कर रहे अन्य लोगों के लिए पैरामीटर का मूल्य भिन्न हो सकता है, बस इसे वही रखना महत्वपूर्ण है, क्योंकि सर्वर (या उपकरण) डिफ़ॉल्ट सेटिंग किसी भी परेशान हो सकती है।


क्या आप लिखे गए पूरे स्ट्रिंग को साझा करने का मन करेंगे? जैसा कि मैं आप के रूप में एक ही स्थिति है। हालांकि मुझे अभी भी यकीन नहीं है कि यह मेरे लिए काम क्यों नहीं कर रहा है। यह एक ही सर्वर पर है, एक वेबसाइट का मंचन करने की कोशिश करने के साथ mysqldump -uUSER -p user_db | gzip > user_db_$(date +"%Y%m%d_%H%M").sql.gzतत्कालीन आयात का उपयोग करने की कोशिश कर रहा हैgunzip -c user_db_datetime.sql.gz | mysql -uUSER -p user_db
रोमियो पैट्रिक

हमारी स्ट्रिंग आपके लिए उपयोगी नहीं होगी, क्योंकि यह विभिन्न कस्टम सेटिंग्स का एक विशाल संग्रह है। जिस तरह से आप अपनी स्थिति का वर्णन करते हैं, मेरा उत्तर लागू नहीं होगा: मेरी समस्या डंपिंग कंप्यूटर से उत्पन्न हुई / कनेक्शन बहाल करने की तुलना में एक अलग सेटअप है, इसलिए हमें समान होने के लिए मजबूर करने के लिए डिफ़ॉल्ट चारसेट को निर्दिष्ट करने की आवश्यकता है।
टॉर्क

0

पुराना लेकिन सोने के जैसा खरा!

MacOS (कैटालिना 10.15.7) पर यह थोड़ा अजीब था: मैं अपने नाम बदलने के लिए किया था dump.sqlमें dump.zipऔर उसके बाद, मैं खोजक का उपयोग करने के लिए यह अनज़िप करने के लिए किया था (!)। टर्मिनल में, unzip dump.zipओडर tar xfz dump.sql[or .gz .tar ...]त्रुटि संदेश की ओर जाता है।

अंत में, खोजक ने इसे पूरी तरह से ठीक कर दिया है, उसके बाद मैं बिना किसी समस्या के फ़ाइल आयात कर सकता हूं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.