মাইএসকিউএল ত্রুটি 2006: মাইএসকিএল সার্ভার চলে গেছে


238

আমি কিছু ফাইল প্রক্রিয়া করতে এবং একটি দূরবর্তী মাইএসকিউএল সার্ভারে ফলাফলগুলি রিপোর্ট করার জন্য আমার অফিসে একটি সার্ভার চালাচ্ছি।

ফাইল প্রসেসিংয়ে কিছু সময় লাগে এবং নিম্নলিখিত ত্রুটিটি দিয়ে প্রক্রিয়াটি অর্ধেক হয়ে যায়:

2006, MySQL server has gone away

আমি মাইএসকিউএল সেটিং, ওয়েটটাইমআউটআউট সম্পর্কে শুনেছি , তবে আমার কি আমার অফিসের সার্ভারে বা দূরবর্তী মাইএসকিউএল সার্ভারে এটি পরিবর্তন করা দরকার?


2
এটি সেই জাদুকরী সার্ভারের উপর নির্ভর করে ত্রুটি দেয়
bksi


11
গুগল থেকে লোকেরা এখানে আসার জন্য: max_allowed_packetআকার বা wait_timeoutপরিমাণ পরিবর্তন করে যদি এটি ঠিক না করে তবে আপনার মেমোরির ব্যবহারটি পরীক্ষা করুন। আমি একই ত্রুটি পেয়েছিলাম এবং এটি আমার সার্ভারের মেমরির বাইরে চলে যাওয়ার কারণে ঘটছে। আমি একটি 1 জিবি সোয়াপ ফাইল যুক্ত করেছি এবং এটি এটি ঠিক করে দিয়েছে।
পিকামান্ডার 2

2
@ পিকামান্ডার 2 ইঙ্গিতটির জন্য ধন্যবাদ!
ইহসান

4
উহু! তাহলে সব মিথ্যা? মাইকিউএল সার্ভার আসলে কোথাও যায় নি? এটি এখনও আমার সার্ভারে আছে? Whao! :))
দামিলোলা ওলুওকেরে

উত্তর:


32

সংযোগটি পরীক্ষা করে নেওয়া এবং প্রয়োজনে এটি পুনরায় প্রতিষ্ঠিত করা সহজ হতে পারে।

পিএইচপি দেখুন : mysqli_ping এই তথ্যের জন্য।


ভাল কথা, আপনার যদি এমন প্রক্রিয়া অন্তর্বর্তী হয়ে থাকে তবে আপনার সংযোগটি ছেড়ে দেওয়া ভাল so যাতে আপনি সমস্ত সংযোগ ব্যবহার না করেন। সংযোগটি পুনর্নির্মাণ করা সাধারণত সস্তা। +1
ইজমির রামিরেজ

1
2018 এ: mysqli_ping চিত্রিত হয়েছে
fb

@fb পিডিও দিয়ে এটি করতে কী ব্যবহৃত হয়?
beppe9000

359

আমি বেশ কয়েকবার এর মুখোমুখি হয়েছি এবং আমি সাধারণত উত্তরটি খুব কম ডিফল্ট সেটিংসের খুঁজে পেয়েছি max_allowed_packet

এটি /etc/my.cnf(আন্ডার [mysqld]) এ 8 বা 16 এম তে বাড়ানো সাধারণত এটি ঠিক করে দেয়। (মাইএসকিএল ৫.7-এ ডিফল্টটি 41943044MB।

[mysqld]
max_allowed_packet=16M

দ্রষ্টব্য: লাইনটি উপস্থিত না থাকলে কেবল তৈরি করুন

দ্রষ্টব্য: এটি চলমান হিসাবে এটি আপনার সার্ভারে সেট করা যেতে পারে।

ব্যবহার set global max_allowed_packet=104857600। এটি এটি 100MB এ সেট করে।


28
মনে রাখবেন এটি চলমান হিসাবে এটি আপনার সার্ভারে সেট করা যেতে পারে। ব্যবহার করুন: "বিশ্বব্যাপী সর্বোচ্চ_গতিযুক্ত_প্যাকেট = 104857600 সেট করুন"। দ্রষ্টব্য: আমার মান এটি 100MB এ সেট করে।
রিকুমালী

26
এক্সএএমএপপি ব্যবহারকারীদের জন্য, my.cnf পাওয়া যাবে: সি: \ xampp \ mysql \ বিন \
ভ্যালেনটিন দেশপা

3
WAMP- এ: সি: amp wamp \ bin \ mysql \ mysql5.6.12 \ my.ini, [wampmysqld] এর অধীনে ম্যাক্স_গ্ল্যাড_প্যাকেট = 500 এম সেট করুন
এলিয়া ওয়েইস

2
আমার সমস্যাটিও স্থির করে রেখেছেন :)
আলতাফ হুসেন

2
গুরুত্বপূর্ণ দ্রষ্টব্য: এই প্রভাবটি কার্যকর হওয়ার জন্য আমাকে আমার মাইএসকিএল সার্ভারটি পুনরায় চালু করতে হয়েছিল। অর্থাত mysql.server stop, mysql.server start(অক্টোবর 2018, মাইএসকিউএল v5.7, MacOS এর)
নিতিন Nain থেকে

41

আমি একই সমস্যা কিন্তু changeing ছিল max_allowed_packetমধ্যে my.ini/my.cnfঅধীনে ফাইল [mysqld]কৌতুক করেছেন।

একটি লাইন যুক্ত করুন

max_allowed_packet = 500M

এখন restart the MySQL serviceএকবার হয়ে গেলে


5
অন্য লোকটি 16 এম লিখেছিল, আপনি 500 এম লিখেছেন, এই সেটিংটির তাত্পর্য কী?
pal4Live

1
@ Pal4 Life এটি অনুমোদিত সন্নিবেশ বিবৃতিগুলির সর্বোচ্চ আকার। আপনার সন্নিবেশ বিবৃতিটি 16M এর বেশি হলে কী হবে (যদি বিবৃতিটি লংব্লব কলাম বা তাই নিয়ে থাকে) যদি আপনি বিপুল পরিমাণে তথ্য সন্নিবেশ করিয়ে থাকেন তবে নিরাপদ দিক থেকে 500 এম এর মতো বিশাল করুন।
সতীশ ডি

এটি আমার পক্ষে কাজ করেছে তবে কেন জানি না। ডিফল্ট মানটি 1M ছিল তবে আমি এটি 100M এ পরিবর্তন করলে ত্রুটিটি চলে যায়। সমস্যাটি শুরু হয়েছিল যখন আমি আমার সার্ভারে নিষ্ক্রিয় থ্রেডের সংখ্যা হ্রাস করার প্রয়াসে অপেক্ষা_টাইমআউট = 30 সেট করি।
ভিনসেন্ট

36

আমি মাইএসকিউএল কমান্ড-লাইনে নিম্নলিখিত কমান্ডটি একটি মাইএসকিউএল ডাটাবেসটি পুনরুদ্ধার করতে ব্যবহার করেছি যা আকারটি 7 গিগাবাইটের বেশি হয় এবং এটি কার্যকর হয়।

set global max_allowed_packet=268435456;

কেন অবাক হয়ে গেল? প্যাকেটের আকারের সাথে সম্পর্কিত হওয়ার জন্য ত্রুটিটি
বোঝায়

এটি আমার সমস্যার সমাধান করেছে, এটি সরাসরি উপায়ে প্রশ্নের সাথে সম্পর্কিত নয় তবে এই অন্যান্য সমস্যাযুক্ত লোকদের সহায়তা করা উচিত।
মিগারুসন্তে

পরিবর্তিত হয়েছে কিনা তা যাচাই করতে বা বর্তমান মানটি যে কেউ ব্যবহার করতে পারেন তা দেখার জন্যshow variables like 'max_allowed_packet';
মার্সিন

16

ত্রুটি: 2006 ( CR_SERVER_GONE_ERROR )

বার্তা: মাইএসকিউএল সার্ভার চলে গেছে

এই সমস্যাটি সমাধান করার জন্য সাধারণত আপনি আবার সংযোগের চেষ্টা করতে পারেন এবং আবার কোয়েরিটি করতে পারেন - পুরোপুরি হাল ছাড়ার আগে 3-4 বারের মতো চেষ্টা করুন।

আমি ধরে নিচ্ছি আপনি পিডিও ব্যবহার করছেন। যদি তা হয় তবে আপনি PDO ব্যতিক্রম ধরবেন, কাউন্টারকে বাড়িয়ে তুলবেন এবং তারপরে কাউন্টারটি একটি চৌম্বের নিচে থাকলে আবার চেষ্টা করুন।

যদি আপনার কাছে এমন কোনও ক্যোয়ারী রয়েছে যা একটি সময়সীমা ঘটাচ্ছে তখন আপনি এই পরিবর্তনশীলটি নির্বাহ করে সেট করতে পারেন:

SET @@GLOBAL.wait_timeout=300;
SET @@LOCAL.wait_timeout=300;  -- OR current session only

যেখানে 300 টি সেকেন্ডের সংখ্যা যেখানে আপনি মনে করেন ক্যোয়ারিতে সর্বাধিক সময় লাগতে পারে।

মাইএসকিএল সংযোগের সমস্যাগুলি কীভাবে মোকাবেলা করতে হবে সে সম্পর্কে আরও তথ্য।

সম্পাদনা: আপনি যে দুটি অন্যান্য সেটিংসও ব্যবহার করতে চাইতে পারেন তা হ'ল net_write_timeoutএবং net_read_timeout



11

এই ত্রুটিটি ওয়েটটাইমআউটআউটের মেয়াদ শেষ হওয়ার কারণে ঘটে।

শুধু মাইএসকিএল সার্ভারে যান এর অপেক্ষা_আউটআউটটি পরীক্ষা করুন:

mysql> বৈচিত্রগুলি দেখান 'অপেক্ষা_আউটআউট' পছন্দ করুন

mysql> বিশ্বব্যাপী ওয়েট_টাইমআউট সেট করুন = 600 # 10 মিনিট বা আপনার প্রয়োজনের জন্য সর্বাধিক অপেক্ষা করার সময়

http://sggoyal.blogspot.in/2015/01/2006-mysql-server-has-gone-away.html


আমি বুঝতে পারছি না যে কেউ এই উত্তরটিকে কেন হ্রাস করবেন ?! আমার জন্য সহায়ক ছিল।
বেসিল মুসা

11

এই ত্রুটির জন্য বেশ কয়েকটি কারণ রয়েছে।

মাইএসকিউএল / মারিয়াডিবি সম্পর্কিত:

  • wait_timeout - সেকেন্ডের মধ্যে সময় যে সার্ভারটি কোনও সংযোগটি বন্ধ হওয়ার আগে এটি সক্রিয় হওয়ার জন্য অপেক্ষা করে।
  • interactive_timeout - সেকেন্ডের মধ্যে সময় যা সার্ভার একটি ইন্টারেক্টিভ সংযোগের জন্য অপেক্ষা করে।
  • max_allowed_packet- একটি প্যাকেট বা উত্পন্ন / মধ্যবর্তী স্ট্রিংয়ের বাইটে সর্বাধিক আকার। 1024 এর গুণকগুলিতে বৃহত্তম বিএলএলওবি হিসাবে বড় সেট করুন।

My.cnf এর উদাহরণ :

[mysqld]
# 8 hours
wait_timeout = 28800
# 8 hours
interactive_timeout = 28800
max_allowed_packet = 256M

সার্ভার সম্পর্কিত:

  • আপনার সার্ভারে পূর্ণ মেমরি রয়েছে - র‌্যামের সাথে তথ্য পরীক্ষা করুন free -h

সম্পর্কিত ফ্রেমওয়ার্ক:

এটি কীভাবে ডিবাগ করবেন:

  • মাইএসকিউএল / মারিয়াডিবি ভেরিয়েবলের মানগুলি পরীক্ষা করুন।
    • স্কয়ার সহ: SHOW VARIABLES LIKE '%time%';
    • কমান্ড লাইন: mysqladmin variables
  • ত্রুটির জন্য ভার্বোসিটি চালু করুন:
    • MariaDB: log_warnings = 4
    • মাইএসকিউএল: log_error_verbosity = 3
  • ত্রুটি সম্পর্কে আরও তথ্যের জন্য ডক্স পরীক্ষা করুন Check

9

উইন্ডোজগুলিতে এক্স ক্যাম্প ব্যবহার করা ছেলেরা এই পাথটি xampp / mysql / bin / my.ini ব্যবহার করা উচিত এবং ম্যাক্স_গ্ল্যাড_প্যাক্টটি (বিভাগ [মাইএসকিএলডি] এর অধীনে) আপনার পছন্দ আকারে পরিবর্তন করা উচিত। যেমন

max_allowed_packet=8M

আবার php.ini এ (xampp / php / php.ini) আপলোড_ম্যাক্স_ফাইলেস পছন্দ আকার। যেমন

upload_max_filesize=8M

আমি এটি আবিষ্কার না করা পর্যন্ত কিছু সময়ের জন্য আমাকে মাথা ব্যাথা দিয়েছিল। আশা করি এটা সাহায্য করবে.


এটি চয়ন করা উত্তর হওয়া উচিত
বাইসানচি

আমি upload_max_filesizeপরিবর্তনশীল খুঁজে পাচ্ছি না । এটি সর্বদা আমার
মাইএসকিএলে

9

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

আমি সর্বোচ্চ_বিহীন_প্যাকটি এবং ওয়েট-টাইমআউটআউট সেটিংস পরিবর্তন করার চেষ্টা করেছি তবে তাদের উভয়ই এটি ঠিক করে নি।

দেখা যাচ্ছে যে আমার সার্ভারটি র‍্যামের বাইরে ছিল। আমি একটি 1 জিবি সোয়াপ ফাইল যুক্ত করেছি এবং এটি আমার সমস্যার সমাধান করেছে।

আপনার স্মৃতিশক্তি পরীক্ষা free -hকরে দেখুন এটি কি কারণে ঘটছে।


1
তোমাকে অনেক ধন্যবাদ! আমার ডিজিটাল ওশনে আমার একই সমস্যা ছিল এবং এই সমাধানটি কাজ করেছিল! আমি আমার স্ক্রিপ্টের অনেকগুলি দৌড়াদৌড়ি করেছি তবে কিছু থ্রেড পরে এটি হঠাৎ বন্ধ হয়ে যায় এবং বিদ্যমান সমস্ত সংযোগকে হত্যা করে। এখন সব ঠিক আছে।
স্টালিনকো

7

এটা আমার জন্য র‌্যামের সমস্যা ছিল।

এমনকি 12 সিপিইউ কোর এবং 32 জিবি র‌্যাম সহ একটি সার্ভারেও আমার একই সমস্যা ছিল। আমি আরও গবেষণা করে র‌্যাম মুক্ত করার চেষ্টা করেছি। র‌্যাম মুক্ত করার জন্য আমি উবুন্টু 14.04 এ ব্যবহার করা কমান্ডটি এখানে:

sync && echo 3 | sudo tee /proc/sys/vm/drop_caches

এবং, এটি সবকিছু স্থির করে দিয়েছিল। আমি প্রতি ঘন্টা এটি চালানোর জন্য ক্রোন এর নীচে সেট করেছি।

crontab -e

0 * * * * bash /root/ram.sh;

এবং, আপনি কতটা নিখরচায় র‌্যাম উপলব্ধ তা পরীক্ষা করতে এই কমান্ডটি ব্যবহার করতে পারেন:

free -h

এবং, আপনি এই জাতীয় কিছু পাবেন:

             total       used       free     shared    buffers     cached
Mem:           31G        12G        18G        59M       1.9G       973M
-/+ buffers/cache:       9.9G        21G
Swap:         8.0G       368M       7.6G

5

আমার ক্ষেত্রে এটি open_files_limitভেরিয়েবলের স্বল্প মূল্য ছিল , যা ডেটা ফাইলগুলিতে মাইএসকিএলডি অ্যাক্সেসকে বাধা দেয়।

আমি এটি দিয়ে যাচাই করেছি:

mysql> SHOW VARIABLES LIKE 'open%';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| open_files_limit | 1185  |
+------------------+-------+
1 row in set (0.00 sec)

আমি ভেরিয়েবলটি বড় মানে পরিবর্তন করার পরে, আমাদের সার্ভারটি আবার জীবিত ছিল:

[mysqld]
open_files_limit = 100000

5

আপনি যদি 64 বিট WAMPSERVER ব্যবহার করছেন তবে দয়া করে ম্যাক্স_গ্ল্যাড_প্যাক্টের একাধিক উপস্থিতি সন্ধান করুন কারণ ডাব্লুএইচএমপি [wampmysqld64] এর অধীনে মান সেট ব্যবহার করে এবং [mysqldump] এর অধীন মান সেটটি ব্যবহার করে না, যা আমার জন্য সমস্যা ছিল, আমি ভুলটি আপডেট করছি। এটিকে সর্বোচ্চ_বিহীন_প্যাকেট = 64 এম এর মতো কিছুতে সেট করুন।

আশা করি এটি অন্যান্য ওয়াল্পসারভার-ব্যবহারকারীদের বাইরে সহায়তা করবে।


5

এটি সাধারণত মাইএসকিউএল সার্ভার সংযোগের সমস্যা বা সময়সীমা নির্দেশ করে । সাধারণত পরিবর্তন করে সমাধান করা যেতে পারে wait_timeout এবং max_allowed_packet মধ্যে my.cnf বা অনুরূপ।

আমি এই মানগুলি বলতে চাই:

অপেক্ষা_টাইমআউট = 28800

সর্বোচ্চ_নয়েড_প্যাকেট = 8 এম


4

ভ্যাগ্র্যান্ট বক্সের জন্য, নিশ্চিত হয়ে নিন যে আপনি বাক্সে পর্যাপ্ত মেমরি বরাদ্দ করেছেন

config.vm.provider "virtualbox" do |vb|
  vb.memory = "4096"
end

1
এর জন্য আপনাকে ধন্যবাদ :)
SynackSA

4

অসম্ভব পরিস্থিতি হ'ল আপনার কাছে ক্লায়েন্ট এবং সার্ভারের মধ্যে ফায়ারওয়াল রয়েছে যা টিসিপিটিকে সংযোগে পুনরায় সেট করতে বাধ্য করে।

আমার এই সমস্যাটি ছিল এবং আমি দেখতে পেলাম যে আমাদের কর্পোরেট এফ 5 ফায়ারওয়ালটি নিষ্ক্রিয় সেশনগুলি 5 মিনিটেরও বেশি সময় নিষ্ক্রিয় রাখার জন্য কনফিগার করা হয়েছিল।

আবারও এটি অসম্ভব দৃশ্যের scenario


4

মাইএসকিএল সার্ভারের লগগুলি পরীক্ষা করার জন্য এটি সর্বদা একটি ভাল ধারণা, কেন এটি চলে যায়।

এটা আপনাকে বলবে।


4

আপনি যদি এক্সএএমপি সার্ভার ব্যবহার করে থাকেন:

Xampp -> mysql -> bin -> my.ini এ যান

প্যারামিটারের নীচে পরিবর্তন করুন:

সর্বোচ্চ_নোলা_প্যাকেট = 500 এম

ইনোডব_লগ_ফাই_সাইজ = 128 এম

এটি আমাকে অনেক সাহায্য করেছে :)


3

নীচের লিগনটিকে আপনার মধ্যে নিঃসরণ করুন এটি my.ini/my.cnfআপনার বড় ফাইলটিকে ছোট অংশে বিভক্ত করবে

# binary logging format - mixed recommended
# binlog_format=mixed

প্রতি

# binary logging format - mixed recommended
binlog_format=mixed

3

আমি এই সমস্যাটি "# 2006 - মাইএসকিউএল সার্ভার চলে গেছে" এর সমাধান পেয়েছি। সমাধান কেবল দুটি ফাইল পরীক্ষা করতে হবে

  1. config.inc.php
  2. config.sample.inc.php

উইন্ডোতে এই ফাইলগুলির পথ

C:\wamp64\apps\phpmyadmin4.6.4

এই দুটি ফাইলে এর মান:

$cfg['Servers'][$i]['host']must be 'localhost' .

আমার ক্ষেত্রে এটি ছিল:

$cfg['Servers'][$i]['host'] = '127.0.0.1';

এটিকে পরিবর্তন করুন:

"$cfg['Servers'][$i]['host']" = 'localhost';

উভয় নিশ্চিত করুন:

  1. config.inc.php
  2. config.sample.inc.php ফাইলগুলি অবশ্যই এটি 'লোকালহোস্ট' হওয়া উচিত।

এবং শেষ সেট:

$cfg['Servers'][$i]['AllowNoPassword'] = true;

তারপরে Wampserver পুনরায় চালু করুন।


Phpmyadmin ব্যবহারকারীর নাম এবং পাসওয়ার্ড পরিবর্তন করতে

আপনি phpmyadmin ব্যবহারকারীর নাম এবং পাসওয়ার্ডটি config.inc.php ফাইলের মাধ্যমে সরাসরি পরিবর্তন করতে পারেন

এই দুটি লাইন

$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = '';

এখানে আপনি নতুন ব্যবহারকারীর নাম এবং পাসওয়ার্ড দিতে পারেন। পরিবর্তনের পরে ফাইলটি সংরক্ষণ করুন এবং ডাব্লুএএমএপি সার্ভার পুনরায় চালু করুন।


2

আমার উবুন্টু ডেস্কটপে বিভিন্ন মাইএসকিউএল ক্লায়েন্ট সফ্টওয়্যারটিতে আমি ত্রুটি 2006 বার্তা পেয়েছি। দেখা গেল যে আমার জেডিবিসি ড্রাইভার সংস্করণটি অনেক পুরানো।


2

এটি আপনার .sql ফাইলের আকারের সমস্যা হতে পারে।

আপনি যদি এক্সএএমপি ব্যবহার করেন। এক্সএএমপিপি নিয়ন্ত্রণ প্যানেলে যান -> মাইএসকিউএল কনফিগারেশন ক্লিক করুন -> my.ini খুলুন।

প্যাকেটের আকার বাড়ান।

max_allowed_packet = 2M -> 10M

2

আপনি যদি এক্সএএমপিপি ব্যবহার করে থাকেন তবে একটি সহজ উপায় আছে। এক্সএএমপিপি নিয়ন্ত্রণ প্যানেলটি খুলুন এবং মাইএসকিএল বিভাগে কনফিগার বোতামটি ক্লিক করুন click
এখানে চিত্র বর্ণনা লিখুন

এখন my.ini এ ক্লিক করুন এবং এটি সম্পাদকটি খুলবে। আপনার প্রয়োজনীয় আকারে সর্বোচ্চ_নিযুক্ত_প্যাকটি আপডেট করুন।

এখানে চিত্র বর্ণনা লিখুন

তারপরে মাইএসকিএল পরিষেবাটি পুনরায় চালু করুন। মাইএসকিএল পরিষেবাতে স্টপ ক্লিক করুন আবার শুরু করুন। কয়েক মিনিট অপেক্ষা করুন। এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন

তারপরে আবার আপনার মাইএসকিএল কোয়েরিটি চালানোর চেষ্টা করুন। আশা করি এটি কার্যকর হবে।


2

এমএএমপি 5.3, আপনি মাই সিএনএফ পাবেন না এবং এগুলি যুক্ত করা কার্যকর হয় না কারণ ম্যাক্স_গ্যালেনড_প্যাকেট ভেরিয়েবলগুলিতে সংরক্ষিত থাকে।

একটি সমাধান হতে পারে:

  1. যান HTTP: // স্থানীয় হোস্ট / phpMyAdmin
  2. এসকিউএল ট্যাবে যান
  3. ভেরিয়েবলগুলি প্রদর্শন করুন এবং মানগুলি পরীক্ষা করুন, যদি এটি ছোট হয় তবে বড় মান সহ চালান
  4. নিম্নলিখিত ক্যোয়ারীটি চালান, এটি সর্বাধিক_নয়ে_প্যাকেটটি 7 জিবিতে সেট করে:

    গ্লোবাল ম্যাক্স_গ্ল্যাড_প্যাকেট = 268435456 সেট করুন;

কারও কারও জন্য আপনাকে নিম্নলিখিত মানগুলিও বাড়িয়ে দিতে হবে:

set global wait_timeout = 600;
set innodb_log_file_size =268435456;

0

এক্সএএমপিপি ব্যবহারকারীদের জন্য, সি: \ xampp \ mysql \ bin \ my.ini তে 2 ম্যাক্স_গ্ল্যাড_প্যাকেট পরামিতি রয়েছে।


0

এই ত্রুটিটি মূলত দুটি কারণে ঘটে।

  1. আপনার র‍্যাম খুব কম।
  2. আপনি সংযোগ করার চেষ্টা করার সময় ডাটাবেস সংযোগটি বন্ধ হয়ে যায়।

আপনি নীচে এই কোড চেষ্টা করতে পারেন।

# Simplification to execute an SQL string of getting a data from the database
def get(self, sql_string, sql_vars=(), debug_sql=0):
    try:            
        self.cursor.execute(sql_string, sql_vars)
        return self.cursor.fetchall()
    except (AttributeError, MySQLdb.OperationalError):
        self.__init__()
        self.cursor.execute(sql_string, sql_vars)
        return self.cursor.fetchall()

এটি ত্রুটিটি প্রশমিত করে যা এর পিছনে কারণ যাই হোক না কেন, বিশেষত দ্বিতীয় কারণে।

যদি এটি কম র‌্যামের কারণে ঘটে থাকে তবে আপনাকে কোড থেকে ডেটাবেস কনফিগারেশন থেকে ডাটাবেস সংযোগ দক্ষতা বাড়াতে হবে বা কেবল র‌্যাম বাড়িয়ে তুলতে হবে।


0

এই ক্ষেত্রে যে কেউ সাহায্য করে:

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

  public static function getConnection($database, $host, $user, $password)
 {
 if (!self::$instance) {
  return self::newConnection($database, $host, $user, $password);
 } elseif ($database . $host . $user != self::$connectionDetails) {

স্ব :: $ দৃষ্টান্ত-> ক্যোয়ারী ('কিল কনটেকশন_আইডি ()'); স্ব :: $ দৃষ্টান্ত = নাল; ফিরতি স্ব :: নতুন সংযোগ ($ ডাটাবেস, $ হোস্ট, $ ব্যবহারকারী, $ পাসওয়ার্ড); self ফিরতি স্ব :: $ উদাহরণ; } ভাল দেখা যাচ্ছে যে আমরা হত্যার সাথে কিছুটা গভীর হয়েছি এবং তাই পুরানো সংযোগে গুরুত্বপূর্ণ কাজগুলি করার প্রক্রিয়াগুলি কখনই তাদের ব্যবসা শেষ করতে পারে না। সুতরাং আমরা এই লাইন বাদ

  self::$instance->query('KILL CONNECTION_ID()');
  self::$instance = null;

এবং যেমন মেশিনটির হার্ডওয়্যার এবং সেটআপ এটির অনুমতি দেয় আমরা যোগ করে সার্ভারে অনুমোদিত সংযোগগুলির সংখ্যা বাড়িয়েছি

max_connections = 500

আমাদের কনফিগারেশন ফাইল। এটি আপাতত আমাদের সমস্যার সমাধান করে এবং আমরা মাইএসকিএল সংযোগগুলি হত্যা করার বিষয়ে কিছু শিখেছি।


-5

আপনি যদি জানেন যে আপনি কিছুক্ষণের জন্য অফলাইনে যাচ্ছেন তবে আপনি আপনার সংযোগটি বন্ধ করতে, আপনার প্রক্রিয়াজাতকরণটি করতে, পুনরায় সংযুক্ত করতে এবং আপনার প্রতিবেদনগুলি লিখতে পারেন।


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