একসাথে সমস্ত টেবিল মেরামত করুন


112

কিভাবে একসাথে ডাটাবেসের সমস্ত টেবিল চেক করবেন?

check table ''tablename'';একের পর এক সমস্ত টেবিলের জন্য ক্যোয়ারী টাইপ করা ।

এর মতো কোনও সাধারণ কমান্ড check allবা এর মতো কিছু আছে কি ?

উত্তর:



108

আদেশটি হ'ল:

mysqlcheck -u root -p --auto-repair --check --all-databases

জিজ্ঞাসা করার সময় আপনাকে অবশ্যই পাসওয়ার্ড সরবরাহ করতে হবে,

বা আপনি এটি চালাতে পারেন তবে এটি সুপারিশ করা হয়নি কারণ পাসওয়ার্ডটি পরিষ্কার লেখায় লেখা হয়েছে:

mysqlcheck -u root --password=THEPASSWORD --auto-repair --check --all-databases

7
mysqlcheck -u root -p --auto-মেরামত - চেক --optimize - সমস্ত ডাটাবেস ত্রুটি: mysqlcheck একাধিক বিপরীত কমান্ড সমর্থন করে না
আলেক্ক

11
যদি আপনি বিবাদী কমান্ড ত্রুটিটি পান তবে --optimize বিকল্পটি ব্যবহার করুন।
সারকাস্ট্রন

আমি অনুমান করি যে এই বিকল্পগুলির মধ্যে আপনাকে একটি এবং কেবল একটিটি ব্যবহার করতে হবে: স্বয়ংক্রিয় মেরামত, চেক বা অনুকূলিতকরণ। আমি কেবল অটো-মেরামত ব্যবহার করেছি এবং কাজ করেছি
প্যাকেট ট্রেসার

আপনি যা বলেছেন তা আমি চেষ্টা করেছি তবে আমি পেয়েছি: মাইএসকিএল চেক: প্রাপ্তি ত্রুটি: 1045: সংযোগ দেওয়ার চেষ্টা করার সময় ব্যবহারকারীর 'রুট' @ 'লোকালহোস্ট' (পাসওয়ার্ড: হ্যাঁ) এর জন্য অ্যাক্সেস অস্বীকার করা হয়েছিল এবং আমি জানি যে আমি সঠিক পাসওয়ার্ডটি ব্যবহার করছি।
ডগ

24

REPAIRডাটাবেসের অভ্যন্তরে সমস্ত টেবিলের জন্য এসকিউএল স্ট্যাটাস মুদ্রণ করতে নিম্নলিখিত কোয়েরি ব্যবহার করুন :

select concat('REPAIR TABLE ', table_name, ';') from information_schema.tables 
where table_schema='mydatabase'; 

এর পরে সমস্ত প্রশ্নের অনুলিপি করুন এবং এটি চালনা করুন mydatabase

দ্রষ্টব্য: mydatabaseপছন্দসই ডিবি নামের সাথে প্রতিস্থাপন করুন


9

পাসওয়ার্ড টাইপ করার দরকার নেই, কেবল এই আদেশগুলির কোনও একটি ব্যবহার করুন (স্ব-বর্ণনামূলক):

mysqlcheck --all-databases -a #analyze
mysqlcheck --all-databases -r #repair
mysqlcheck --all-databases -o #optimize

8

নিম্নলিখিত কমান্ডটি উইন্ডোজে কমান্ড প্রম্পট (প্রশাসক হিসাবে) ব্যবহার করে আমার জন্য কাজ করেছে:

mysqlcheck -u root -p -A --auto-repair

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


3

এটি করার জন্য কোনও ডিফল্ট আদেশ নেই, তবে আপনি কাজটি করতে একটি পদ্ধতি তৈরি করতে পারেন। এটি সারিগুলির মধ্য দিয়ে পুনরাবৃত্তি হবে 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

1

আমি শেল থেকে একটি সাধারণ চেক জন্য এটি পছন্দ:

mysql -p<password> -D<database> -B -e "SHOW TABLES LIKE 'User%'" \
| awk 'NR != 1 {print "CHECK TABLE "$1";"}' \
| mysql -p<password> -D<database>

1
mysql -ssআউটপুট থেকে বাদ দেওয়া কলামের নামগুলি তৈরি করতে আপনি এটি ব্যবহার করতে পারেন - এটি NR != 1আপনার কোড থেকে সরানোর অনুমতি দেবে
ফ্লফি

1

প্লেস্ক হোস্টের জন্য, এর মধ্যে একটি করে করা উচিত: (উভয়ই একই কাজ করুন)

mysqlrepair -uadmin -p$(cat /etc/psa/.psa.shadow) -A
# or
mysqlcheck -uadmin -p$(cat /etc/psa/.psa.shadow) --repair -A

1

আপনার ব্যবহারকারীর নাম এবং পাসওয়ার্ডের প্রয়োজন হতে পারে:

mysqlcheck -A --auto-repair -uroot -p

আপনাকে পাসওয়ার্ডের জন্য অনুরোধ জানানো হবে।

mysqlcheck -A --auto-repair -uroot -p{{password here}}

আপনি যদি ক্রোন রাখতে চান তবে আপনার পাসওয়ার্ডটি সরল পাঠ্যে দৃশ্যমান হবে!


1

যদি দুর্নীতিগ্রস্থ টেবিলগুলি পরে থাকে

mysqlcheck -A --auto-repair

চেষ্টা

mysqlcheck -A --auto-repair --use-frm

-উস-ফ্রিম কি করে?
ডেভিডম্যান 77

--use-frm মাইআইএসএএম টেবিলগুলিতে মেরামত পরিচালনার জন্য, ডেটা অভিধান থেকে টেবিলের কাঠামোটি পান যাতে টেবিলটি মেরামত করা যায় এমনকি যদি .MYI শিরোনামটি ক্ষতিগ্রস্থ হয়। (সিএফ। ডেভ.মাইসকিএল.ডোক
রেফম্যান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.