উত্তর:
কমান্ড লাইন থেকে আপনি ব্যবহার করতে পারেন:
mysqlcheck -A --auto-repair
আদেশটি হ'ল:
mysqlcheck -u root -p --auto-repair --check --all-databases
জিজ্ঞাসা করার সময় আপনাকে অবশ্যই পাসওয়ার্ড সরবরাহ করতে হবে,
বা আপনি এটি চালাতে পারেন তবে এটি সুপারিশ করা হয়নি কারণ পাসওয়ার্ডটি পরিষ্কার লেখায় লেখা হয়েছে:
mysqlcheck -u root --password=THEPASSWORD --auto-repair --check --all-databases
REPAIRডাটাবেসের অভ্যন্তরে সমস্ত টেবিলের জন্য এসকিউএল স্ট্যাটাস মুদ্রণ করতে নিম্নলিখিত কোয়েরি ব্যবহার করুন :
select concat('REPAIR TABLE ', table_name, ';') from information_schema.tables
where table_schema='mydatabase';
এর পরে সমস্ত প্রশ্নের অনুলিপি করুন এবং এটি চালনা করুন mydatabase।
দ্রষ্টব্য: mydatabaseপছন্দসই ডিবি নামের সাথে প্রতিস্থাপন করুন
পাসওয়ার্ড টাইপ করার দরকার নেই, কেবল এই আদেশগুলির কোনও একটি ব্যবহার করুন (স্ব-বর্ণনামূলক):
mysqlcheck --all-databases -a #analyze
mysqlcheck --all-databases -r #repair
mysqlcheck --all-databases -o #optimize
নিম্নলিখিত কমান্ডটি উইন্ডোজে কমান্ড প্রম্পট (প্রশাসক হিসাবে) ব্যবহার করে আমার জন্য কাজ করেছে:
mysqlcheck -u root -p -A --auto-repair
রুট ব্যবহারকারীর সাথে মাইএসকিএল চেক চালান, একটি পাসওয়ার্ডের জন্য অনুরোধ করুন, সমস্ত ডাটাবেস চেক করুন এবং কোনও দূষিত টেবিলগুলি স্বয়ংক্রিয়ভাবে মেরামত করুন।
এটি করার জন্য কোনও ডিফল্ট আদেশ নেই, তবে আপনি কাজটি করতে একটি পদ্ধতি তৈরি করতে পারেন। এটি সারিগুলির মধ্য দিয়ে পুনরাবৃত্তি হবে information_schemaএবং REPAIR TABLE 'tablename';প্রতিটি সারিটির জন্য কল করবে । CHECK TABLEএখনও প্রস্তুত বিবৃতি জন্য সমর্থিত নয়। এখানে উদাহরণ (আপনার ডাটাবেসের নাম দিয়ে MYDATABASE প্রতিস্থাপন করুন):
CREATE DEFINER = 'root'@'localhost'
PROCEDURE MYDATABASE.repair_all()
BEGIN
DECLARE endloop INT DEFAULT 0;
DECLARE tableName char(100);
DECLARE rCursor CURSOR FOR SELECT `TABLE_NAME` FROM `information_schema`.`TABLES` WHERE `TABLE_SCHEMA`=DATABASE();
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET endloop=1;
OPEN rCursor;
FETCH rCursor INTO tableName;
WHILE endloop = 0 DO
SET @sql = CONCAT("REPAIR TABLE `", tableName, "`");
PREPARE statement FROM @sql;
EXECUTE statement;
FETCH rCursor INTO tableName;
END WHILE;
CLOSE rCursor;
END
আমি শেল থেকে একটি সাধারণ চেক জন্য এটি পছন্দ:
mysql -p<password> -D<database> -B -e "SHOW TABLES LIKE 'User%'" \
| awk 'NR != 1 {print "CHECK TABLE "$1";"}' \
| mysql -p<password> -D<database>
mysql -ssআউটপুট থেকে বাদ দেওয়া কলামের নামগুলি তৈরি করতে আপনি এটি ব্যবহার করতে পারেন - এটি NR != 1আপনার কোড থেকে সরানোর অনুমতি দেবে
আপনার ব্যবহারকারীর নাম এবং পাসওয়ার্ডের প্রয়োজন হতে পারে:
mysqlcheck -A --auto-repair -uroot -p
আপনাকে পাসওয়ার্ডের জন্য অনুরোধ জানানো হবে।
mysqlcheck -A --auto-repair -uroot -p{{password here}}
আপনি যদি ক্রোন রাখতে চান তবে আপনার পাসওয়ার্ডটি সরল পাঠ্যে দৃশ্যমান হবে!
যদি দুর্নীতিগ্রস্থ টেবিলগুলি পরে থাকে
mysqlcheck -A --auto-repair
চেষ্টা
mysqlcheck -A --auto-repair --use-frm