Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

त्रुटि 1878 (HY000):अस्थायी फ़ाइल लेखन विफलता

MySQL ALTER TABLE को लागू करता है तालिका पुन:निर्माण के रूप में, इसलिए तालिका की दो प्रतियां प्रक्रिया के दौरान किसी न किसी स्तर पर सिस्टम पर मौजूद होती हैं। इस ऑपरेशन के लिए आपको 12 जीबी से अधिक खाली स्थान की आवश्यकता होगी।

कुछ जगह खाली करो। वैकल्पिक रूप से, अपने सर्वर को किसी भिन्न अस्थायी निर्देशिका का उपयोग करने के लिए सेट करें ए> , जहां पर्याप्त जगह हो।

विकल्प का विकल्प (WHILE संग्रहीत कार्यविधि में लपेटने की आवश्यकता हो सकती है):

  • एक नई तालिका बनाएं (temp_table ) नई संरचना के साथ
  • डेटा को original_table से छोटे बैचों में स्थानांतरित करें temp_table . में
  • ड्रॉप original_table और नाम बदलें temp_table


-- useful only if concurrent access is allowed during migration
LOCK TABLES original_table WRITE, temp_table WRITE;

SELECT COUNT(*) INTO @anythingleft FROM original_table;
WHILE @anythingleft DO
    -- transfer data
    INSERT INTO temp_table
    SELECT
        original_table.old_stuff,
        "new stuff"
        FROM original_table
        ORDER BY any_sortable_column_with_unique_constraint -- very important!
        LIMIT 1000; -- batch size, adjust to your situation

    DELETE FROM original_table
    ORDER BY any_sortable_column_with_unique_constraint
    LIMIT 1000; -- ORDER BY and LIMIT clauses MUST be exactly the same as above

    SELECT COUNT(*) INTO @anythingleft FROM original_table;
END WHILE;

-- delete, rename
DROP TABLE original_table;
UNLOCK TABLES;
RENAME TABLE old_table TO original_table;

यदि आपकी तालिका InnoDB का उपयोग करती है, तो SELECT ... FOR UPDATE; . के साथ अधिक विस्तृत समाधान संभव है टेबल लॉक के बजाय, लेकिन मुझे विश्वास है कि आपको यह विचार मिल गया है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. डेटाबेस में विशेष वर्ण कैसे सम्मिलित करें?

  2. सूत्र के आधार पर mysql कॉलम मान को कैसे पॉप्युलेट करें?

  3. MySQL यूनिक्स समय 32 बिट अहस्ताक्षरित पूर्णांक सीमा से कम क्यों रुकता है?

  4. विभिन्न डेटाबेस के बीच MySQL InnoDB विदेशी कुंजी

  5. MySQL त्रुटि:mysql_fetch_assoc () पैरामीटर 1 को संसाधन होने की अपेक्षा करता है