এসকিউএল ডাম্প থেকে একটি ডাটাবেস পুনরুদ্ধার করার সময় ত্রুটি


14

আমি মাইএসকিউএলে অত্যন্ত নতুন এবং এটি উইন্ডোতে চালাচ্ছি। আমি মাইএসকিউএল এর একটি ডাম্পফিল থেকে একটি ডাটাবেস পুনরুদ্ধার করার চেষ্টা করছি, তবে আমি নিম্নলিখিত ত্রুটি পেয়েছি:

$ >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
আপনি কি ব্যাকআপটি নিয়েছিলেন?
মেনিয়োস

আমি এই ত্রুটিটি পেয়েছিলাম তবে একটি নতুন মাইএসকিউএল ডাম্প পেয়েছি এবং পুনরায় আমদানির চেষ্টা করেছি এবং এটি দুর্দান্ত কাজ করেছে। আমাদের মাইএসকিউএল ডাম্প দুটি জিপড অংশে আসে যা কনটেনেটেড এবং তারপরে আনজিপ করা উচিত। আমি মনে করি প্রাথমিক আনজিপিং বাধাগ্রস্ত হয়েছিল, ফলস্বরূপ .sqlঅদ্ভুত অক্ষর এবং এনকোডিং সহ একটি ফাইল। দ্বিতীয় প্রচেষ্টা ভাল কাজ করে।
জোশুয়া পিন্টার

উত্তর:


18

রেফারেন্স --binary-mode(মাইএসকিউএল 5.6.3-এ প্রচলিত) সম্ভবত একটি ক্ষোভ।

আপনি সেখানে কোনও মাইএসকিল্ডাম্প আউটপুট ফাইল নিয়ে কাজ করছেন বলে মনে হচ্ছে না। fileইউটিলিটি চেষ্টা করুন ।

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

যদি আপনি ASCII textপ্রতিক্রিয়া না পান তবে আপনি এমন কোনও কিছু নিয়ে কাজ করছেন যা একেবারে ডাম্প ফাইল mysqldumpনয়, বা আপনি সংক্ষেপিত এমন কোনও কিছু নিয়ে কাজ করছেন (উদাহরণস্বরূপ gzip বা bzip2 দিয়ে), যা আপনি ' এটিতে পাইপ দেওয়ার আগে সঙ্কুচিত করা দরকার mysql

যদি আপনি দেখতে পান SQLite 3.x databaseতবে অবশ্যই আপনার উত্তর আছে ... এটি একটি কাঁচা এসকিউএল ডাটাবেস, কোনও মাইএসকিউএল ডাম্প ফাইল নয়।

আসলে, এসকিউএল ডাটাবেসের প্রথম কয়েকটি বাইটগুলি হ'ল:

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

মনে রাখবেন যে এখানে 16 ম অক্টেট 0x00, ERROR: ASCII '\0' appeared in the statement...এই ক্ষেত্রে বার্তাটি ব্যাখ্যা করছে । যে পরামর্শটি --binary-modeউপযুক্ত তা হ'ল ভুয়া অ্যালার্ম।


উইন্ডোজ ব্যবহারকারীরা: 'ফাইল' ইউটিলিটি ইউনিক্সের একটি সরঞ্জাম, তবে উইন্ডোজ সংস্করণটি এখানে পাওয়া যাবে


আমি এই ত্রুটিটি পাচ্ছি এবং file MySQL.sqlএটি চালানোর সময় ফিরে আসবে UTF-8 Unicode text, with very long lines। কোন ধারনা?
জোশুয়া পিন্টার

চেষ্টা @JoshuaPinter less -S MySQL.sql। তুমি কি দেখতে পাও? এটি কি কোনও মাইএসকিউএল ডাম্প ফাইলের মতো দেখাচ্ছে? তারা বেশিরভাগ অংশই মানব-পঠনযোগ্য। ( qপ্রস্থান করার জন্য ব্যবহার করুন ))
মাইকেল - sqlbot

1
হ্যাঁ, প্রথম লাইনের মতো দেখাচ্ছে -- MySQL dump 10.13 Distrib 5.7.22, for Linux (x86_64)। এবং স্পেস বারের মাধ্যমে নীচে সরানো সাধারণত মাইএসকিউএল নির্দেশাবলী দেখায়। তবে, যদি আমি নীচে যেতে থাকি তবে এটি একটি নির্দিষ্ট লাইনে জমাট বাঁধে। ত্রুটি বার্তায় একই লাইনটি উপস্থিত হয়েছিল। আমি এটি আরও খতিয়ে দেখলাম এবং মাইএসকিউএল ডাম্প প্রথমবার যথাযথভাবে আনজিপ করা হয়নি। কী ভুল হয়েছে তা নিশ্চিত নয় তবে আমি যখন পুনরায় আনজিপ করি তখন এটি ঠিকঠাক কাজ করে। আমি এটি সম্পর্কে অন্যদের জন্য এখানে একটি উত্তর যুক্ত করেছি: stackoverflow.com/a/51432853/293280 আপনার সহায়তা এবং দ্রুত জবাবের জন্য অনেক ধন্যবাদ। 👍
জোশুয়া পিন্টার

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
এটা সঠিক উত্তর. পাওয়ারশেলস> ইউটিএফ -16 এনকোডযুক্ত ফাইল তৈরি করে যা সমস্যার সৃষ্টি করছে। পাওয়ারশেলের
সিমজাল

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

আমাকেও পাওয়ারশেলের মধ্যে

আমি যখন মাইএসকিলডাম্প কল করতে পাওয়ার > শেল এবং > আউটপুট ফাইল করার জন্য পাইপ ব্যবহার করছিলাম তখন আমি এই সমস্যার মুখোমুখি হয়েছি । পাওয়ারশেল ফাইলটি তৈরি করার সময় ভুল এনকোডিং ব্যবহার করছিল এবং যখন আমি মাইএসকিএল ব্যবহার করে ফাইলটি আমদানি করার চেষ্টা করতাম তখন আমি একই ত্রুটিটি উপস্থাপিত ছিলাম <<এক্সপোর্টড-ফাইল.এসকিউএল

আমি দেখেছি যে পাওয়ারশেল সেশনে ইউটিএফ 8 এ ডিফল্ট এনকোডিংটি সেট করা এই সমস্যার সমাধান করেছে।

আমার রেজোলিউশন - পরীক্ষিত পাওয়ারশেল 5.1:

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

উদাহরণ: আমি কীভাবে রফতানি তৈরি করছিলাম (সরলীকৃত) :

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

দ্রষ্টব্য: আবিষ্কার হয়েছে এটি পাওয়ারশেল ৪.০ এ কাজ করে না

আমার বিকাশের পরিবেশ 5.1 চলছে, তবে প্রোড 4.0 এ রয়েছে এবং আমার প্রাথমিক ফিক্স পাওয়ারশেলের পুরানো সংস্করণগুলিতে কাজ করে না।

ব্যবহার করা প্রয়োজন | Set-Content -Encoding UTF8 $fileName

এটি ইতিমধ্যে ইফেদী পরামর্শ দিয়েছিলেন


0

আপনি কি নোটপ্যাড ++ (বা অন্য কোনও সম্পাদক) খোলার এবং আমাদের ইউটিএফ -8 এ রূপান্তর / সংরক্ষণ করার চেষ্টা করেছেন?

দেখুন: /programming/7256049/notepad-converting-ansi-encoded-file-to-utf-8

অন্য বিকল্পটি ইউটিএফ -8 হিসাবে ফাইলটি খুলতে এবং সংরক্ষণ করতে পাঠ্য র‌্যাংগল ব্যবহার করা যেতে পারে: http://www.barebones.com/products/textwrangler/


0

কেউ আমাকে একটি সংকুচিত গেটার পাঠিয়েছে। এমনকি গেটারের সাথে খুব বেশি পরিচিত ছিল না, তবে এটি অন্য সংক্ষেপণের ফর্ম্যাট।

$ 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

সমাধান: ব্যাকআপ ফাইলটি এক্সট্রাক্ট করুন এবং তারপরে এই এক্সট্রাক্ট করা এসকিএল ডাম্পটি পুনরুদ্ধার করুন।

উদাহরণ:

ব্যাকআপটি ডাম্প.এসকিএল.এল.ডি. ফাইল হিসাবে নেওয়া হয়েছে এবং এটি নিম্নরূপে গানজিপ সিএমডি ব্যবহার করে উত্তোলন করা হয়েছে,

shell>  gunzip dump.sql.gz

এবং পুনরুদ্ধার করা হয়েছে dmp.sql ফাইল।

তথ্যসূত্র: মাইএসকিউএল বাইনারি এবং ইন্টারেক্টিভ মোড সম্পর্কে।

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

এটি আমার জন্য কাজ করে এবং সমস্ত সেট !!


0

আমার ক্ষেত্রে, ফাইলটি দূষিত হয়েছিল। ডাটাবেসটি এক্সটেনশন দিয়ে সংকুচিত .bz2হয়েছিল তবে এটি আসলে একটি .tar.bz2

ব্যবহার bzip2 -dkকরে ডেকমপ্রোসিং কোনও ত্রুটি আউটপুট দেয় না এবং ফাইলটি উত্পন্ন করে। fileফাইল আউটপুটগুলিতে কমান্ডটি ব্যবহার করা bzip2 compressed data, block size = 900kযাতে এটি ব্যবহার করা এমনকি ভুল মনে হয় না।

আমাকে ব্যবহার করতে হয়েছিল tar -xf myfile.bz2

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.