2012-01-12 13 views
96

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

ERROR 144 - Table './extas_d47727/xzclf_ads' is marked as crashed and last (automatic?) repair failed 

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

+0

मैंने देखा है कि यह ज्यादातर तब होता है जब अंतर्निहित फ़ाइल सिस्टम मुक्त इनोड से बाहर हो जाता है। डीएफ -hi के साथ जांचें। आम तौर पर कुछ इसे छोटी फाइलों के भार से भर रहा है, जैसे उदा। PHP सत्र फ़ाइलें जो साफ़ नहीं होती हैं। – Zrin

उत्तर

189

यदि आपकी 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 
+1

मैंने उपरोक्त आदेश की कोशिश की मुझे यह त्रुटि मिली नया tempfile नहीं बना सकता: 'xzclf_ads.TMD' – GoodtheBesT

+1

कृपया मेरे अपडेट किए गए उत्तर से उन अन्य विकल्पों के साथ प्रयास करें। –

+0

धन्यवाद मैंने कोशिश की कि यह काम करने लग रहा था लेकिन इस त्रुटि को रोकना बंद कर दिया? "myisamchk: डिस्क पूर्ण लेखन है '/ tmp/STP7Q4qR' (एरकोड: 28)। किसी के लिए खाली स्थान की प्रतीक्षा कर रहा है ... (डिस्क स्थान खाली करने के बाद सर्वर को जारी रखने के लिए 60 सेकंड की देरी की उम्मीद है) myisamchk: पुनः प्रयास करें 60 सेकेंड में। संदेश 600 सेकंड में पुनः मुद्रित " – GoodtheBesT

12

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

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

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

repair table <table_name>; 

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

+4

सरल और सही समाधान :) –

+1

सही समाधान मेरी समस्या का समाधान ... – SINGH

+3

जीवन बचतकर्ता! इसे हल करने का सबसे आसान तरीका +1 – JohnA10

3

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

+0

'data_dir' कहां है? – CMCDragonkai

+0

इस आदेश के साथ इसके लिए खोजें 'grep -r datadir/etc/mysql/'। डेबियन और उबंटू के तहत '/ var/lib/mysql' होना चाहिए। – ThorstenS

3

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

समाधान

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

मैं मरम्मत बयान के USE_FRM जोड़ने के लिए यह काम करने के लिए की जरूरत है।

REPAIR TABLE <table_name> USE_FRM;