MySQL टेबल को दुर्घटनाग्रस्त और अंतिम (स्वचालित) मरम्मत के रूप में चिह्नित किया गया है


126

मैं इस तालिका की मरम्मत अचानक सर्वर से लटका रहा था और जब मैं वापस लौटा तो सभी तालिकाएँ ठीक हैं लेकिन यह 'उपयोग में' दिखा रहा है और जब मैं इसे सुधारने की कोशिश करता हूं तो यह आगे नहीं बढ़ता है।

ERROR 144 - तालिका './extas_d47727/xzclf_ads' दुर्घटनाग्रस्त और अंतिम (स्वचालित) मरम्मत के रूप में चिह्नित है?

इसकी मरम्मत के लिए मैं क्या कर सकता हूं?


1
मैंने देखा है कि यह ज्यादातर तब होता है जब अंतर्निहित फ़ाइल सिस्टम फ्री इनोड्स से बाहर चला जाता है। Df -hi से जांच करें। आमतौर पर कोई चीज इसे छोटी फाइलों के भार से भर रही है, जैसे कि php सेशन फाइलें जो साफ नहीं होती हैं।
ज़रीन

जवाबों:


260

यदि आपकी MySQL प्रक्रिया चल रही है, तो इसे रोकें। डेबियन पर:

sudo service mysql stop

अपने डेटा फ़ोल्डर में जाएं। डेबियन पर:

cd /var/lib/mysql/$DATABASE_NAME

चलाने की कोशिश करें:

myisamchk -r $TABLE_NAME

यदि वह काम नहीं करता है, तो आप कोशिश कर सकते हैं:

myisamchk -r -v -f $TABLE_NAME

आप अपने MySQL सर्वर को फिर से शुरू कर सकते हैं। डेबियन पर:

sudo service mysql start

3
मैं आदेश से ऊपर की कोशिश की मैं नए tempfile नहीं बना सकता यह त्रुटि प्राप्त: 'xzclf_ads.TMD'
CryptoMiningPoolSetupYiimp

2
खैर, डिस्क वास्तव में भरा हुआ है? क्या आप "df -h" चलाने की कोशिश कर सकते हैं? सबसे अधिक संभावना यह है कि आपको कुछ स्थान खाली करना चाहिए ... तालिका की मरम्मत के दौरान, यह अस्थायी तालिका में लिखने के लिए कुछ डिस्क स्थान का उपयोग करता है। जैसा कि आप त्रुटि संदेश से देख सकते हैं कि यह आपके / tmp / फ़ोल्डर में लिखता है
अलेक्जेंडर वोकैटिक

13
मुझे नेविगेट करना था /var/lib/mysql/<database>और दौड़ना था myisamchk -r -v -f ./<table name>
लिनुस ओलियंडर

5
मैं एक मिल गया है myisam_sort_buffer_size is too small: त्रुटि है, तो इस आदेश मेरे लिए काम कियाmyisamchk -r -v --sort_buffer_size=2G <table_name>
डुसान

1
वाह, मैंने सोचा कि मेरी पूरी वेबसाइट hosed थी। इतना आसान फिक्स। आप मेरे हीरो हैं!
एंथोनी

105

निम्नलिखित क्वेरी चलाने का प्रयास करें:

repair table <table_name>;

मेरे पास एक ही मुद्दा था और इसने मुझे समस्या हल कर दी।


यह एक त्वरित तय था! एक "खराब" विकल्प तालिका थी। सुनिश्चित करें कि आप पहले सही डेटाबेस का चयन करें!
ज्यूलस्टार्ट

12

यदि यह आपको / var / lib / mysql पर जाते समय अनुमति देने से इनकार करता है तो निम्न समाधान का उपयोग करें

$ cd /var/lib/
$ sudo -u mysql myisamchk -r -v -f mysql/<DB_NAME>/<TABLE_NAME>

4

मुझे इसे काम करने के लिए USE_FRM को सुधार कथन में जोड़ने की आवश्यकता थी।

REPAIR TABLE <table_name> USE_FRM;

3

मुझे myisamchk: error: myisam_sort_buffer_size is too smallत्रुटि के रूप में मिली ।

समाधान

myisamchk -r -v mysql/<DB_NAME>/<TABLE_NAME> --sort_buffer_size=2G

2

पर जाएं data_dirऔर हटाने Your_table.TMPकी मरम्मत के बाद फ़ाइल <Your_table>तालिका।


कहाँ है data_dir?
CMCDragonkai

1
इस कमांड के साथ इसे खोजें grep -r datadir /etc/mysql//var/lib/mysqlडेबियन और ubuntu के तहत होना चाहिए ।
ThorstenS

1

यह 100% समाधान है। मैंने खुद इसकी कोशिश की।

myisamchk -r -v -f --sort_buffer_size = 128M --key_buffer_size = 128M / var / lib / mysql / databasename / tabloname


0

मैंने मौजूदा उत्तरों में विकल्पों की कोशिश की, मुख्य रूप से एक सही चिह्नित किया जो मेरे परिदृश्य में काम नहीं करता था। हालांकि, जो काम किया वह phpMyAdmin का उपयोग कर रहा था। डेटाबेस का चयन करें और फिर तालिका का चयन करें, नीचे ड्रॉप डाउन मेनू से "मरम्मत तालिका" चुनें।

  • सर्वर प्रकार: MySQL
  • सर्वर संस्करण: 5.7.23 - MySQL सामुदायिक सर्वर (GPL)
  • phpMyAdmin: संस्करण जानकारी: 4.7.7
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.