সাধারণভাবে ত্রুটি:
ত্রুটি: 2006 ( CR_SERVER_GONE_ERROR
) - মাইএসকিউএল সার্ভার চলে গেছে
এর অর্থ ক্লায়েন্ট সার্ভারে কোনও প্রশ্ন পাঠাতে পারেনি ।
mysql
আমদানি
আপনার নির্দিষ্ট ক্ষেত্রে ডাটাবেস ফাইল মাধ্যমে আমদানি করার সময় mysql
, সম্ভবত এটির অর্থ হ'ল এসকিউএল ফাইলের কিছু ক্যোয়ারী আমদানি করার পক্ষে খুব বড় এবং সেগুলি সার্ভারে কার্যকর করা যায়নি, তাই ক্লায়েন্টটি প্রথম দেখা ত্রুটিতে ব্যর্থ হয়।
সুতরাং আপনি নিম্নলিখিত সম্ভাবনাগুলি করেছেন:
এর -f
জন্য বল বিকল্প ( ) যোগ করুনmysql
বাকি জিজ্ঞাসাগুলি চালিয়ে যেতে এবং ।
এটি দরকারী যদি ডাটাবেসে ক্যাশে সম্পর্কিত কিছু বড় প্রশ্ন থাকে যা যাইহোক প্রাসঙ্গিক নয়।
max_allowed_packet
wait_timeout
আপনার সার্ভার কনফিগারেশন বৃদ্ধি করুন এবং (উদাঃ ~/.my.cnf
)।
--skip-extended-insert
বৃহত্তর প্রশ্নগুলি ভেঙে দেওয়ার জন্য বিকল্পটি ব্যবহার করে ডাটাবেস ডাম্প করুন । তারপরে আবার এটি আমদানি করুন।
এর --max-allowed-packet
জন্য বিকল্প প্রয়োগ করার চেষ্টা করুন mysql
।
সাধারণ কারণ
সাধারণভাবে এই ত্রুটিটি বেশ কয়েকটি জিনিসকে বোঝাতে পারে যেমন:
সার্ভারের একটি প্রশ্নের ভুল বা খুব বড়,
সমাধান: পরিবর্তনশীল বৃদ্ধিmax_allowed_packet
।
ভেরিয়েবলটি [mysqld]
বিভাগের অধীনে রয়েছে কিনা তা নিশ্চিত করুন [mysql]
।
পরীক্ষার জন্য বড় সংখ্যা ব্যবহার করতে ভয় পাবেন না (যেমন 1G
)।
মাইএসকিউএল / মারিয়াডিবি সার্ভারটি পুনরায় চালু করতে ভুলবেন না।
ডাবল চেক করে মানটি সঠিকভাবে সেট করা হয়েছিল:
mysql -sve "SELECT @@max_allowed_packet" # or:
mysql -sve "SHOW VARIABLES LIKE 'max_allowed_packet'"
আপনি ক্লায়েন্ট পক্ষের টিসিপি / আইপি সংযোগ থেকে একটি সময়সীমা পেয়েছেন।
সমাধান: পরিবর্তনশীল বৃদ্ধিwait_timeout
।
সার্ভারের সাথে সংযোগ বন্ধ হয়ে যাওয়ার পরে আপনি একটি কোয়েরি চালানোর চেষ্টা করেছিলেন।
সমাধান: অ্যাপ্লিকেশনটিতে একটি যুক্তিযুক্ত ত্রুটি সংশোধন করা উচিত।
হোস্টের নাম অনুসন্ধান ব্যর্থ হয়েছে (যেমন DNS সার্ভার সমস্যা), বা সার্ভারটি --skip-networking
বিকল্প দিয়ে শুরু করা হয়েছে ।
আরেকটি সম্ভাবনা হ'ল আপনার ফায়ারওয়াল মাইএসকিউএল পোর্টটিকে ব্লক করে (যেমন 3306 ডিফল্টরূপে)।
চলমান থ্রেডটি হত্যা করা হয়েছে, সুতরাং আবার চেষ্টা করুন।
কোয়েরি কার্যকর করার সময় আপনি একটি বাগের মুখোমুখি হয়েছি যেখানে সার্ভারটি মারা গিয়েছিল।
একটি পৃথক হোস্টে চলমান ক্লায়েন্টের সংযোগের জন্য প্রয়োজনীয় সুযোগ-সুবিধা নেই।
এবং আরও অনেক কিছু, তাই এখানে আরও শিখুন: B.5.2.9 মাইএসকিউএল সার্ভার চলে গেছে ।
ডিবাগ
এখানে বিশেষজ্ঞের কয়েকটি স্তরের ডিবাগ ধারণা রয়েছে:
লগগুলি পরীক্ষা করুন, যেমন
sudo tail -f $(mysql -Nse "SELECT @@GLOBAL.log_error")
আপনার সংযোগ mysql
, telnet
বা পিং ফাংশনগুলির মাধ্যমে পরীক্ষা করুন (যেমন mysql_ping
পিএইচপি তে)।
tcpdump
মাইএসকিউএল যোগাযোগকে স্নিফ করার জন্য ব্যবহার করুন (সকেট সংযোগের জন্য কাজ করবে না), যেমন:
sudo tcpdump -i lo0 -s 1500 -nl -w- port mysql | strings
লিনাক্সে, ব্যবহার করুন strace
। বিএসডি / ম্যাক ব্যবহারে dtrace
/ dtruss
যেমন
sudo dtruss -a -fn mysqld 2>&1
দেখুন: মাইএসকিউএলকে ডিট্যাকিংয়ের সাথে শুরু করা
মাইএসকিউএল সার্ভার বা ক্লায়েন্টকে কীভাবে ডিবাগ করতে হবে সে সম্পর্কে আরও জানুন: 26.5 মাইএসকিউএল ডিবাগিং এবং পোর্টিং ।
রেফারেন্সের জন্য ক্লায়েন্ট কমান্ডের জন্য ত্রুটি sql-common/client.c
ছুঁড়ে দেওয়ার জন্য দায়ী ফাইলের উত্স কোডটি পরীক্ষা করুন CR_SERVER_GONE_ERROR
।
MYSQL_TRACE(SEND_COMMAND, mysql, (command, header_length, arg_length, header, arg));
if (net_write_command(net,(uchar) command, header, header_length,
arg, arg_length))
{
set_mysql_error(mysql, CR_SERVER_GONE_ERROR, unknown_sqlstate);
goto end;
}