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


96

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

$ >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 লোকালহোস্ট -ডি ডাটাবেস - বাইনারি-মোড -o <ডাম্প। এসকিএল
নিক

এটি লাইন 1 এ ERROR দেয়: অজানা কমান্ড '। ☻'।
ব্যবহারকারী 1434997

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

উত্তর:


217

ফাইলটি আনজিপ করুন এবং তারপরে আবার আমদানি করুন।


12
প্রতিভা ধন্যবাদ!
klm123

4
আপনি জিপ এবং তারপর আনজিপ মানে?
J86

13
এটি আমার জন্য এভাবে কাজ করেছে, db.sql.gz আনজিপ করুন, আপনি db.sql পাবেন, আবার নামটি db.sql.gz এ রাখবেন, এটি জিপ করবেন না, কেবল নাম পরিবর্তন করুন, তারপরে আবার আনবিপ করুন db.sql এ এবং এখন আপনি আমদানির জন্য সঠিক ফাইল পাবেন।
মটসমিশন

@ মটস্ম্যানিশ সিরিয়াসলি? আমি ভেবেছিলাম এটি একটি রসিকতা। আমি এটি একটি শট দেব এবং দেখুন যে এটি কাজ করে।
জোশুয়া পিন্টার

4
মুখের তালু 🤦‍♀️🤦‍♀️🤦‍♀️🤦‍♀️
রামবাতিনো

53

উইন্ডোতে ডাম্প ফাইল পুনরুদ্ধার করার ক্ষেত্রে আমি একই সমস্যাটি পূরণ করি। আমার ডাম্প ফাইলটি উইন্ডোজ পাওয়ারশেল এবং মাইএসকিলডাম্পের মতো তৈরি হয়েছিল:

mysqldump db > dump.sql

সমস্যাটি পাওয়ারশেলের ডিফল্ট এনকোডিং থেকে আসে ইউটিএফ 16। এই মধ্যে গভীর তাকাতে, আমরা ব্যবহার করতে পারি গনুহ এর "ফাইল" ইউটিলিটি, এবং একটি Windows সংস্করণের অস্তিত্ব আছে এখানে
আমার ডাম্প ফাইলের আউটপুট হল:

লিটল এন্ডিয়ান ইউটিএফ -16 ইউনিকোড পাঠ্য, খুব দীর্ঘ লাইন সহ, সিআরএলএফ লাইন টার্মিনেটর সহ।

তারপরে কোডিং সিস্টেমের একটি রূপান্তর প্রয়োজন, এবং বিভিন্ন সফ্টওয়্যার এটি করতে পারে। উদাহরণস্বরূপ ইমাসে,

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

তারপরে ইনপুটটির জন্য প্রয়োজনীয় কোডিং সিস্টেম যেমন utf-8।

এবং ভবিষ্যতে আরও ভাল মাইসকিल्डডাম্প ফলাফলের জন্য ব্যবহার করুন:

mysqldump <dbname> -r <filename>

এবং তারপরে আউটপুটটি mysqldumpনিজেই পরিচালিত হয় তবে পাওয়ারশেলের পুনঃনির্দেশ নয়।

রেফারেন্স: /dba/44721/error- moment- restoring- a- database- from- an- sql- dump


mysqldump <dbname> -r <ফাইল নাম> যে কেউ উইন্ডোজ বা ডস সিস্টেম ব্যবহার করেন এটি এর সমাধান। ইউটিএফ -8 ফাইল রূপান্তর একটি ব্যাঘাত। -R বিকল্পটি ব্যবহার করুন, যা ফাইলনামে আউটপুটকে নির্দেশ করে এবং সিআরএলএফ ক্যারেজ রিটার্ন লাইনফিড (\ r \ n) পরিচালনা করে যা উইন্ডোজ ফাইলগুলিতে রাখে, এখানেই সমস্যা রয়েছে। চমৎকার সমাধানের জন্য ধন্যবাদ!
টিমোথি এলজে স্টুয়ার্ট

4
একটি ব্যবহারিক নোটে, আমি নোটপ্যাড ++ ব্যবহার করে উত্পন্ন ফাইলটি ইউটিএফ -8 এ রূপান্তর করে পাওয়ারশেল-এ ফাইল তৈরির পরে এটিকে পেয়েছিলাম।
পিটার মাজেদ

এই উত্তরটি, যদি আমি খনন না করতাম তবে আমাকে সঠিক উত্তর অনুসন্ধানের কয়েক ঘন্টা বাঁচাতে পারত। আশা করি আমি একাধিকবার উপড়ে ফেলতে পারতাম।
sam452

আমি @ পিটারমজিদ হিসাবে একই কাজ করেছি। নোটপ্যাড ++ দিয়ে একটি দ্রুত রূপান্তর এবং সংরক্ষণ আমাকে বিদ্যমান ফাইলটি পুনরুদ্ধার করার অনুমতি দিয়েছে
স্টিফেন আর

18

উইন্ডোজ মেশিনে, দয়া করে পূর্ববর্তী পদক্ষেপগুলি অনুসরণ করুন।

  1. নোটপ্যাডে ফাইল খুলুন।
  2. সেভ এ ক্লিক করুন
  3. এনকোডিং প্রকারের ইউটিএফ -8 নির্বাচন করুন।

এখন আপনার ডিবি উত্স।


এটি আমার জন্য এসকিউএল ব্যাকআপ-ফাইলের জন্য কাজ করেছে যা পাওয়ারশেলের মাধ্যমে মাইসকিल्डম্প চালিয়ে তৈরি করা হয়েছিল। পাওয়ারশেল আউটপুটটি ইউটিএফ -16 ছিল। ইউটিএফ -8 এ পরিবর্তন করা সমস্যার সমাধান করেছে এবং আমাকে ব্যাকআপ-ফাইল থেকে আমার ডেটাবেস পুনরুদ্ধার করার অনুমতি দিয়েছে।
হ্যারি মান্থেকিস

9

টার সংরক্ষণাগার সরঞ্জামের সাহায্যে আপনার ফাইলটি বের করুন। আপনি এটি এইভাবে ব্যবহার করতে পারেন:

tar xf example.sql.gz

4
এটি আমার জন্য উত্তর ছিল। প্রথমে, .sql.gz ফাইলটিকে আমি বন্দুকযুক্ত করেছিলাম যার ফলে আমদানি করার সময় "বাইনারি" ত্রুটি হয়েছিল। ফাইলটি টার / জিজেপড হয়ে গেছে তাই আমাকে প্রথমে ফাইলটি এক্সভিএফ করতে হয়েছিল তখন এটি আমাকে আমদানি করতে দেয়।
সানব্রডেন

8

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

দেখুন: নোটপ্যাড ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ এ এনসিড করা ফাইলগুলিকে নোটপ্যাড ++++ রূপান্তর করা হচ্ছে

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


4
ধন্যবাদ এটি আমার জন্য কৌশলটি করেছে। নোটপ্যাড ++ এ ফাইলটি খুলুন। এনকোডিং> UTF 8 এ রূপান্তর করুন
অভিজিৎ নাগরে

আপনি utf-8 এনকোডিং সহ বিদ্যমান .sql ফাইলটি 'হিসাবে সংরক্ষণ করুন' পরে ফাইলের আকারের উল্লেখযোগ্য পরিবর্তনটি নোট করুন! প্রদত্ত ফাইলের তুলনায় আকারের প্রায় অর্ধেক। আমার ক্ষেত্রে উইন্ডোজ পাওয়ার শেল ব্যবহার করে মাইএসকিএলডাম নেওয়া হয়েছিল, সেই প্রোগ্রামটি এনকোডিংকে বিশৃঙ্খলা করল।
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

আর সমস্যা চলে গেল!


আমি মাইএসকিলডাম পাচ্ছি: 32 বার পেয়েছি
রাদু

যদি এই থ্রেড আপনি সাহায্য করতে সক্ষম হতে পারেন দেখুন stackoverflow.com/questions/22288271/...
Ifedi Okonkwo

ধন্যবাদ. সমস্যাটি হ'ল আমি একটি পুরানো মাইএসকিএল সার্ভারে phpmyadmin এর একটি পুরানো সংস্করণ সহ ডিবি রফতানি করেছি। নিশ্চিত না কেন তবে অর্ধেক ডাটাবেস সাফ পাঠ্যে রফতানি করা হয়েছিল এবং অন্যান্য অর্ধেক জিপিপ-এড।
রাদু

5

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


5

আপনার যদি পর্যাপ্ত জায়গা না থাকে বা এটি সঙ্কুচিত করতে সময় নষ্ট করতে না চান, এই আদেশটি ব্যবহার করে দেখুন।

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

আপনার সঙ্কুচিত ফাইলের নাম দিয়ে সংকুচিত-sqlfile.gz প্রতিস্থাপন করতে ভুলবেন না।

.gz পুনরুদ্ধার করা উপরের কমান্ড ব্যতীত কাজ করবে না।


3

এটি অবশ্যই আপনাকে ডাম্প.এসকিউএল সমস্যা ফাইল করতে হবে Seউই সিকুয়েল প্রো ব্যবহার করুন আপনার ফাইলের একোডিং পরীক্ষা করুন t এটি আপনার ডাম্প.এসকিউএল-তে আবর্জনার অক্ষর হওয়া উচিত।


3

আমারও একই সমস্যা ছিল, তবে জানতে পেরেছি যে ডাম্প ফাইলটি আসলে একটি এমএসএসকিউএল সার্ভার ব্যাকআপ ছিল, মাইএসকিউএল নয়।

কখনও কখনও লিগ্যাসি ব্যাকআপ ফাইলগুলি আমাদের উপর কৌশল চালায়। আপনার ডাম্প ফাইল পরীক্ষা করুন।

টার্মিনাল উইন্ডোতে:

~$ cat mybackup.dmp 

ফলাফল ছিল:

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

ক্যাট কমান্ড প্রক্রিয়া বন্ধ করতে:

CTRL + C


1

আপনি যে ফাইলটি আমদানির চেষ্টা করছেন সেটি হ'ল একটি জিপ ফাইল। ফাইলটি আনজিপ করুন এবং তারপরে আবার আমদানির চেষ্টা করুন।


1

লিনাক্সের অধীনে গানজিপ ব্যবহার করে আপনার ফাইলটি আনজিপ করুন আপনার আনজিপ স্ক্যাকএল ফাইলটি ব্যবহার করে সম্পাদনা করুন

vi unzipsqlfile.sql

এসকে ডিডি সহ প্রথম বাইনারি লাইনটি সরিয়ে ফেলুন এসকে শিফট জি দিয়ে ফাইলের নীচে যান এসডি সিফ ফাইলের সাথে শেষ বাইনারি লাইনটি সরিয়ে ফেলুন এসসি এক্স: তারপরে মাইএসকিএলে রিম্পোর্ট করুন:

mysql -u ব্যবহারকারীর নাম -p new_database <unzipsqlfile.sql

আমি জেটব্যাকআপ সিপেনেল মাইএসকিএল ব্যাকআপ থেকে 20go স্কয়ার ফাইল দিয়ে এটি সম্পাদন করেছি। বড় ফাইলগুলির জন্য vi কাজ করার জন্য ধৈর্য ধরুন


0

আপনার ফাইলটি কেবল .sql এক্সটেনশন হওয়া উচিত, (.zip, .gz .rar) ইত্যাদি সমর্থন করবে না। উদাহরণ: dump.sql


0

ত্রুটি সমাধানের জন্য আপনি এটি ব্যবহার করতে পারেন:

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

4
কেন? এটি কীভাবে প্রশ্নটির উত্তরণ করে তা ব্যাখ্যা করুন।
Yunnosch

0

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

আমাদের জন্য, সমাধানটি --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

পুরানো কিন্তু দামি!

ম্যাকওএসে (ক্যাটালিনা 10.15.7) এটি কিছুটা অদ্ভুত ছিল: আমার নিজের নামটি নতুন নামকরণ করতে dump.sqlহয়েছিল dump.zipএবং তার পরে, এটি আনজিপ করার জন্য আমাকে ফাইন্ডার (!) ব্যবহার করতে হয়েছিল। টার্মিনালে, unzip dump.zipওডার tar xfz dump.sql[or .gz .tar ...]ত্রুটি এমএসএসে বাড়ে।

পরিশেষে, অনুসন্ধানকারী এটি সম্পূর্ণ সূক্ষ্মভাবে আনজিপ করে ফেলেছে, এর পরে আমি কোনও সমস্যা ছাড়াই ফাইলটি আমদানি করতে পারি।

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