উইন্ডোজে বাইনারি বিএলওবিএস যুক্ত বড় মাইএসকিউএল ডাম্প ফাইল আমদানি করার সময় ত্রুটি


9

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

আমি কমান্ড লাইন থেকে এটি আমদানি করছি এবং আমি খুব অদ্ভুত ত্রুটি পেয়েছি:

এরিআর 2005 (HY000) লাইনে 3118: অজানা মাইএসকিউএল সার্ভার হোস্ট '╖? * Á Æ╦ dÆ╦N╪Æ · h ^ you "╪i╪ Z + - $ ▼ ₧ ╬Y.∞┌ | ∞l∞ / l ╞⌂î7æ▌X█XE.ºΓ [; ╦ï ♣ éµ♂º╜┤║] .♂┐φ9dë╟█'╕ÿG∟═0à¡úè ♦ ↑ ↑ ù ♣ ♦ ¥ '╔NÑ' (11004)

বিকল্প পাঠ

আমি স্ক্রিনশটটি সংযুক্ত করছি কারণ আমি ধরে নিচ্ছি বাইনারি ডেটা হারিয়ে যাবে ...

সমস্যাটি কী তা আমি ঠিক নিশ্চিত নই, তবে দুটি সম্ভাব্য সমস্যা হ'ল ফাইলের আকার (2 জিবি) যা অত্যন্ত বড় নয়, তবে এটি তুচ্ছভাবে ছোটও নয়, এবং অন্যটি হ'ল এই টেবিলগুলির মধ্যে অনেকগুলি রয়েছে এগুলির মধ্যে জেপিজি চিত্রগুলি (যার কারণ হিসাবে ফাইলটি 2 জিবি বৃহত, বেশিরভাগ অংশের জন্য)।
এছাড়াও, ডাম্পটি একটি লিনাক্স মেশিনে নেওয়া হয়েছিল এবং আমি এটি উইন্ডোজে আমদানি করছি, এটি সমস্যাগুলিতে যুক্ত করতে পারে কিনা তা নিশ্চিত নই (আমি বুঝতে পারি এটি করা উচিত নয়)

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

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

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

কী হতে পারে কোনও ধারণা / কীভাবে এই ত্রুটিটি পাবে?

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

ধন্যবাদ!
ড্যানিয়েল

উত্তর:


14

এই কারণে আমি সর্বদা ব্যবহার করি mysqldump --hex-blob

এই স্যুইচটি ব্যবহার করে ব্লবগুলি এনকোডিং করে ডেটাবেসটিকে আবার ডাম্প করুন এবং এটি কাজ করবে।

স্ক্লিয়োগ বা মাইএসকিএল প্রশাসকের মতো উইন্ডোজ মাইএসকিএল ক্লায়েন্ট আইডিই ব্যবহার করে আপনি এটি আমদানির চেষ্টা করতে পারেন। এটা আমার জন্য একবার কাজ করেছে।


আমি তার জন্য হোস্টিং ছেলেদের জিজ্ঞাসা করার চেষ্টা করব, দেখা যাক এটি তা করে কিনা। এটি কয়েক দিন সময় নিতে পারে, যদিও :-( - আমাকে কী বিভ্রান্ত করে যে আমি অতীতে তাদের কাছ থেকে অন্যান্য বাইনারি ডাম্প আমদানি করতে সক্ষম হয়েছি it কোনও ধারণা কী তা হতে পারে?
ড্যানিয়েল ম্যাগলিয়োলা

কমান্ড লাইন থেকে নয় মাইএসকিএল প্রশাসকের কাছ থেকে আমদানির চেষ্টা করুন
পল

আপনি যদি লিনাক্সে আমদানি করতে পারেন এবং --hex-blob দিয়ে রফতানি করার পরে উইন্ডোতে আমদানি করতে পারেন, আপনি সাময়িকভাবে একটি লিনাক্সে আমদানি করতে পারেন এবং সেখান থেকে --hex-blob দিয়ে রফতানি করতে পারেন। এটির সাথে যদি আপনার সহায়তা (ওরফে: লিনাক্স বাক্স) প্রয়োজন হয় তবে আমাকে জানান।
pupeno

একটি বিশেষ রফতানির প্রয়োজন হয় না এমন একটি সমাধানের জন্য নীচে @ ববসির উত্তর দেখুন।
টি। ব্রায়ান জোনস

7

অগত্যা আপনাকে --hex-blob বিকল্পটি ব্যবহার করার দরকার নেই। আমি এই সমস্যাটি কেবলমাত্র আমার নিজেরাই সমাধান করেছি এবং সমস্যাটি হ'ল আমার যে --max_allowed_packet দরকার হবে তা আমি বড় আকারের সেট করতে সবচেয়ে বড় ডেটা ব্লবকে লোড করব accom আপনার পুনরুদ্ধার কমান্ডটি দেখতে এমন কিছু হওয়া উচিত:

mysql -u user -h hostname --max_allowed_packet=32M dbname < dumpfile.sql

যদি আপনি --hex-blob বিকল্পটি ব্যবহার করেন তবে আপনি 2 বা তার বেশি ফ্যাক্টর দ্বারা আপনার ব্যাকআপটির আকার উল্লেখযোগ্যভাবে বাড়িয়ে তুলবেন। দ্রষ্টব্য: আমি উপরের কমান্ডের সাথে পুনরুদ্ধার করে একই তথ্যটি পুনরুদ্ধার করতে - my.ini (cnf) এ --max_allowed_packet = 64M নির্ধারণ করতে এবং সার্ভারটি পুনরায় চালু করার সাথে কমান্ড লাইনে এটি 64M তে সেট করে তৈরি করে একটি ডাম্প পুনরুদ্ধার করতে হবে --hex-blob বিকল্প।


এটি দুর্দান্ত কাজ করে এবং সম্ভবত এটি গ্রহণযোগ্য উত্তর হওয়া উচিত।
টি। ব্রায়ান জোন্স

2

বড় ফাইল আকারের কারণে এখনও সমস্যা হতে পারে তাই আপনি সর্বোচ্চ-অনুমোদিত-প্যাকেটটি কিছু উচ্চ মানের (mysql কমান্ডের জন্য প্যারাম) সেট করেছেন তা নিশ্চিত করুন make


1

ঠিক আছে, আমি আজ এই সমস্যা ছিল। তবে আমার সমস্যাটি হ'ল ডাটাবেসটি ইতিমধ্যে ফেলে দেওয়া হয়েছিল যখন আমি বুঝতে পারলাম ব্যাকআপটি ভেঙে গেছে। তো, --hex-blobআমার জন্য না! এটি ঠিক করার জন্য আমি পিএইচপিতে একটি ছোট স্ক্রিপ্ট তৈরি করেছি যা "বাইনারি স্ট্রিং" কে হেক্স উপস্থাপনায় রূপান্তর করে যেখানে মানগুলি প্রতিনিধিত্ব করে "_binary '!@{#!@{#'"...

এটি এসকিউএল বিশ্লেষণের জন্য একটি আরজিএক্সএক্স ব্যবহার করছে, যা সম্পূর্ণ নিরাপদ নয়, তবে এটি আমার পক্ষে কাজটি করেছে।

<?php
function convertEncoding($str)
{
    $r = '';
    for ($i = 0; $i < mb_strlen($str); $i++) {
        $r .= sprintf('%02X', mb_ord(mb_substr($str, $i, 1, 'UTF-8'), 'UTF-8'));
    }

    return '0x' . $r;
}


$str = file_get_contents('data.sql');

$newStr = preg_replace_callback('/_binary \'(.+?)\'(,|\))/im', function ($str) {
    $s = convertEncoding(stripcslashes($str[1]));
    echo 'Translated: ' . $str[1] . ' => ' . $s . PHP_EOL;
    echo 'Ending char was: ' . $str[2] . PHP_EOL;
    return $s . $str[2];
}, $str);

file_put_contents('fixed.sql', $newStr) ;

আমি আশা করি এটি আমার মাথাব্যথা কাউকে বাঁচায়!


0

লিনাক্স সার্ভার থেকে ডাম্প ফাইল পুনরুদ্ধার করার সময় আমার একই সমস্যা রয়েছে যার মধ্যে বাইনারি ডেটা রয়েছে। ত্রুটিগুলি এমন কিছুERROR 1064 (42000) at line 551: You have an error in your SQL syntax;

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

আমি --hex-blobবিকল্প দিয়ে --max_allowed_packetএবং এমনকি .sQL ফাইলের পরিবর্তে পাইপলাইনের সাথে ডেটা স্থানান্তর করার চেষ্টা করেছি , তবে কোনও ভাগ্য নেই।

আমি শেষ পর্যন্ত মাইএসকিউএল ওয়ার্কবেঞ্চ ব্যবহার করে এটি সমাধান করেছি এবং উত্পন্ন কমান্ডটি এর মতো

Running: mysql.exe --defaults-file="c:\users\admini~1\appdata\local\temp\tmp1fzxkx.cnf"  --protocol=tcp --host=localhost --user=root --port=3306 --default-character-set=utf8 --comments --database=platform  < "E:\\direcotory\\dump.sql"

তারপরে আমি --default-character-set=utf8কমান্ড লাইন থেকে চেষ্টা করেছি এবং এটি কার্যকর হয়েছে। আশা করি এটি কারও সাহায্য করবে।

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