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


14

मैं 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'.

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


1
क्या आप बैकअप लेने वाले थे?
मेनिओस

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

जवाबों:


18

संदर्भ --binary-mode(MySQL 5.6.3 में पेश किया गया) संभवतः एक व्याकुलता है।

ऐसा नहीं लगता कि आप एक mysqldump आउटपुट फ़ाइल के साथ काम कर रहे हैं। fileउपयोगिता का प्रयास करें ।

shell> file dumpfile.sql
dumpfile.sql: ASCII text

यदि आपको ASCII textप्रतिक्रिया नहीं मिलती है , तो आप किसी ऐसी चीज़ से निपट रहे हैं जो डंप फ़ाइल से mysqldumpबिल्कुल भी नहीं है, या आप उस चीज़ से निपट रहे हैं जो संकुचित है (उदाहरण के लिए gzip या bzip2 के साथ), जिसे आपने ' d इसमें पाइप करने से पहले इसे अनप्लग करने की आवश्यकता है mysql

यदि आप देखते हैं SQLite 3.x databaseतो आपके पास निश्चित रूप से आपका जवाब है ... यह एक कच्चा SQLite डेटाबेस है, न कि MySQL डंप फ़ाइल।

दरअसल, SQLite डेटाबेस के पहले कुछ बाइट्स ये हैं:

53 51 4C 69 74 65 20 66  SQLite f
6F 72 6D 61 74 20 33 00  ormat 3^@

ध्यान दें कि ERROR: ASCII '\0' appeared in the statement...इस मामले में संदेश की व्याख्या करते हुए यहां 16 वीं ऑक्टेट 0x00 है। जो सुझाव --binary-modeउचित है वह गलत अलार्म है।


विंडोज उपयोगकर्ता: 'फाइल' उपयोगिता यूनिक्स का एक उपकरण है, लेकिन विंडोज संस्करण यहां पाया जा सकता है


मुझे यह त्रुटि मिल रही है और जब file MySQL.sqlयह चल रहा है तो वापस आ रहा है UTF-8 Unicode text, with very long lines। कोई विचार?
जोशुआ पिंटर

कोशिश @JoshuaPinter less -S MySQL.sql। क्या देखती है? यह एक MySQL डंप फ़ाइल की तरह दिखता है? वे अधिकांश भाग मानव-पठनीय हैं। ( qबाहर निकलने के लिए उपयोग करें ।)
माइकल - स्क्वैलबोट

1
हां, पहली पंक्ति दिखती है -- MySQL dump 10.13 Distrib 5.7.22, for Linux (x86_64)। और स्पेस बार के माध्यम से नीचे जाने से विशिष्ट MySQL निर्देश दिखाई देते हैं। हालाँकि, अगर मैं नीचे जा रहा हूँ यह एक निश्चित लाइन पर जमा देता है। वही पंक्ति जो त्रुटि संदेश में दिखाई दी थी। मैंने इसे आगे देखा और पता चला कि MySQL डंप को पहली बार ठीक से अनज़िप नहीं किया गया था। निश्चित नहीं है कि क्या गलत हुआ, लेकिन जब मैंने फिर से अनझिप किया, तो यह ठीक काम करता है। मैंने दूसरों के लिए यहां इसके बारे में एक उत्तर जोड़ा: stackoverflow.com/a/51432853/293280 आपकी मदद और त्वरित उत्तर के लिए बहुत बहुत धन्यवाद। Pin
जोशुआ पिंटर

6

खिड़कियाँ

इस कमांड से अपनी डंप फाइलें बनाएं

.\mysqldump [dbname] -r [filename.sql]

का उपयोग करते हुए:

.\mysqldumb --help

-r, --result-file = नाम

                 Direct output to a given file. This option should be used
                 in systems (e.g., DOS, Windows) that use carriage-return
                 linefeed pairs (\r\n) to separate text lines. This option
                 ensures that only a single newline is used.

2
यह सही जवाब है। Powershell का> UTF-16 एन्कोडेड फ़ाइल बनाता है जिससे समस्याएं हो रही हैं। यहां Powershell के लिए खोजें: dev.mysql.com/doc/refman/5.7/en/mysqldump.html
SimZal

1

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

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


1

मुझे भी PowerShell में

मुझे इस मुद्दे का सामना करना पड़ा जब मैं फ़ाइल को आउटपुट पाइप करने के लिए mysqldump और > को कॉल करने के लिए PowerShell का उपयोग कर रहा था । फ़ाइल बनाते समय PowerShell गलत एन्कोडिंग का उपयोग कर रहा था और मुझे उसी त्रुटि के साथ प्रस्तुत किया गया था जब मैंने mysql का उपयोग करके फ़ाइल को आयात करने का प्रयास किया था .. <निर्यात- फ़ाइल .sql

मैंने पाया कि PowerShell सत्र में UTF8 के लिए डिफ़ॉल्ट एन्कोडिंग सेट करने से यह समस्या हल हो गई।

मेरा संकल्प - परीक्षण किया गया PowerShell 5.1:

$PSDefaultParameterValues["Out-File:Encoding"] = "utf8";

उदाहरण: मैं निर्यात कैसे कर रहा था (सरलीकृत) :

$cmdExportDB = "mysqldump --host $Host --databases $DbName -u $UID =p$PWD > $fileName";
Invoke-Expression "& $cmdExportDB";

नोट: पता चला यह PowerShell 4.0 पर काम नहीं करता है

मेरा विकास पर्यावरण 5.1 चल रहा था, लेकिन ठग 4.0 पर है और मेरे शुरुआती फिक्स पॉवरशेल के पुराने संस्करणों में काम नहीं करते हैं।

उपयोग करने की आवश्यकता | Set-Content -Encoding UTF8 $fileName

इफदी द्वारा यह पहले से ही सुझाया गया था


0

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

देखें: /programming/7256049/notepad-converting-ansi-encoded-file-to-utf-8

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


0

किसी ने मुझे एक संकुचित gtar भेजा। जीटीएआर से भी परिचित नहीं था, लेकिन यह एक और संपीड़न प्रारूप है।

$ file core_production-1432173533.sql.gtar
core_production-1432173533.sql.gtar: gzip compressed data, from Unix, last modified: Wed May 20 21:59:31 2015

हालाँकि, मैं इसे हमेशा की तरह समाप्‍त करने में सक्षम था:

tar -zxvf core_production-1432173533.sql.gtar
$ file core_production-1432173533.sql
core_production-1432173533.sql: ASCII text, with very long lines

और फिर मैं आयात कर सकता था:

mysql -u root -p -h localhost core_production < core_production-1432173533.sql

0

समाधान: बैकअप फ़ाइल निकालें और फिर इस निकाले गए sql डंप को पुनर्स्थापित करें।

उदाहरण :

बैकअप को dip.sql.gz फ़ाइल के रूप में लिया गया है और इसे गनज़िप cmd के रूप में निम्नानुसार निकालें,

shell>  gunzip dump.sql.gz

और RESTORE डंप। एसक्यूएल फ़ाइल को निकाले।

Ref: MySQL बाइनरी और इंटरेक्टिव मोड के बारे में।

http://dev.mysql.com/doc/refman/5.7/en/mysql-command-options.html#option_mysql_binary-mode

यह मेरे और सभी सेट के लिए काम करता है !!


0

मेरे मामले में, फ़ाइल दूषित थी। डेटाबेस को विस्तार के साथ संकुचित किया गया था .bz2लेकिन यह वास्तव में था .tar.bz2

Decomprossing bzip2 -dkकिसी भी त्रुटि का उत्पादन नहीं करता है और फ़ाइल उत्पन्न करता है। fileफ़ाइल आउटपुट पर कमांड का उपयोग करना bzip2 compressed data, block size = 900kइसलिए इसका उपयोग करना भी गलत नहीं है।

मुझे इस्तेमाल करना था tar -xf myfile.bz2

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