Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

KESALAHAN 1878 (HY000):Kegagalan penulisan file sementara

MySQL mengimplementasikan ALTER TABLE sebagai pembuatan ulang tabel, jadi dua salinan tabel ada di sistem pada tahap tertentu selama proses. Anda akan membutuhkan lebih dari 12 GB ruang kosong untuk operasi ini.

Kosongkan beberapa ruang. Atau, setel server Anda untuk menggunakan direktori sementara yang berbeda , di mana ada cukup ruang.

Alternatif untuk alternatif (WHILE mungkin perlu dibungkus dengan prosedur tersimpan):

  • buat tabel baru (temp_table ) dengan struktur baru
  • transfer data dalam jumlah kecil dari original_table ke dalam temp_table
  • lepaskan original_table dan ganti nama 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;

Jika tabel Anda menggunakan InnoDB, solusi yang lebih rumit dapat dilakukan dengan SELECT ... FOR UPDATE; alih-alih kunci meja, tapi saya yakin Anda mengerti.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kode Django atau pemicu MySQL

  2. SQL Error 1630:Fungsi SUBSTRING tidak ada.. ya?

  3. Kinerja MySQL - IN Clause vs. Equals (=) untuk Nilai Tunggal

  4. cara menggunakan LINQ ke SQL dengan mySQL

  5. Permintaan SQL untuk mengekstrak semua posting WordPress dengan kategori