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

File kunci salah untuk tabel '/tmp/#sql_3c51_0.MYI' coba perbaiki

Masalah ini disebabkan oleh kurangnya ruang disk di folder /tmp. Volume /tmp digunakan dalam kueri yang memerlukan pembuatan tabel sementara. Tabel sementara ini dalam format MyISAM meskipun kueri hanya menggunakan tabel dengan InnoDB.

Berikut beberapa solusinya:

  • optimalkan kueri sehingga tidak membuat tabel sementara (menulis ulang kueri, membaginya menjadi beberapa kueri, atau menambahkan indeks yang tepat, menganalisis rencana eksekusi dengan pt-query-digest dan EXPLAIN <query> ) Lihat Artikel Percona tentang tabel sementara .
  • optimalkan MySQL agar tidak membuat tabel sementara (sort_buffer_size, join_buffer_size). Lihat:https://dba.stackexchange.com/questions/53201/mysql-creates-temporary-tables-on-disk-how-do-i-stop-it
  • membuat tabel lebih kecil. Jika memungkinkan, hapus baris yang tidak diperlukan
  • gunakan SELECT table1.col1, table2,col1 ... alih-alih select * untuk hanya menggunakan kolom yang Anda perlukan dalam kueri, untuk menghasilkan tabel temp yang lebih kecil
  • gunakan tipe data yang menggunakan lebih sedikit ruang
  • tambahkan lebih banyak ruang disk pada volume tempat folder /tmp berada
  • ubah pengguna folder temp dengan mysql dengan mengatur TMPDIR variabel lingkungan sebelum mysqld start-up. Arahkan TMPDIR ke folder pada volume disk yang memiliki lebih banyak ruang kosong. Anda juga dapat menggunakan tmpdir pilihan di /etc/my.cnf atau --tmpdir di baris perintah layanan mysqld. Lihat:B.5.3.5 Tempat MySQL Menyimpan File Sementara


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menemukan slot gratis dalam sistem pemesanan

  2. bendera 'aktif' atau tidak?

  3. Jika lain pada klausa WHERE

  4. PDO mengambil satu kolom dari tabel ke dalam array 1 dimensi

  5. Perbedaan MySQL dan SQLite dalam SQL