Saya mencoba menambahkan baris ke InnoDB
tabel dengan kueri sederhana:
INSERT INTO zip_codes (zip_code, city) VALUES ('90210', 'Beverly Hills');
Tetapi ketika saya mencoba kueri ini, saya mendapatkan yang berikut:
ERROR 1114 (HY000): Tabel
zip_codes
penuh
Melakukan a
SELECT COUNT(*) FROM zip_codes
memberi saya 188.959 baris, yang sepertinya tidak terlalu banyak mengingat saya memiliki tabel lain dengan 810.635 baris dalam database yang sama.
Saya cukup berpengalaman dengan InnoDB engine
dan tidak pernah mengalami masalah ini dengan MyISAM
. Apa sajakah masalah potensial di sini?
EDIT: Ini hanya terjadi saat menambahkan baris ke zip_codes
tabel.
Jawaban:
EDIT: Periksa terlebih dahulu, jika Anda tidak kehabisan ruang disk, sebelum menyelesaikan ke resolusi terkait konfigurasi.
Anda tampaknya memiliki ukuran maksimum yang terlalu rendah untuk
innodb_data_file_path
Andamy.cnf
, dalam contoh iniAnda tidak dapat menghosting lebih dari 512MB data di semua tabel innodb yang digabungkan.
Mungkin Anda harus beralih ke skema innodb-per-table menggunakan
innodb_file_per_table
.sumber
/etc/mysql/
dan sebagian dipecah menjadi file tambahan di/etc/mysql/conf.d
innodb_data_file_path
baris untuk/etc/mysql/mysql.conf.d/mysqld.cnf
dan me-restartmysql
danapache2
jasaAlasan lain yang mungkin adalah partisi penuh - inilah yang terjadi pada saya sekarang.
sumber
df -h
untuk memeriksa ukuran diskAnda juga akan mendapatkan kesalahan yang sama ERROR 1114 (HY000): Tabel '# sql-310a_8867d7f' penuh
jika Anda mencoba menambahkan indeks ke tabel yang menggunakan mesin penyimpanan MEMORY.
sumber
ALTER TABLE my_table ADD INDEX my_index (column_a, column_b);
itu berhasil.Anda perlu mengubah batas batas yang ditetapkan di my.cnf untuk tabel INNO_DB. Batas memori ini tidak ditetapkan untuk tabel individu, ini ditetapkan untuk semua tabel yang digabungkan.
Jika Anda ingin memori diperpanjang secara otomatis hingga 512MB
Jika Anda tidak mengetahui batasannya atau tidak ingin memberi batasan, Anda dapat memodifikasinya seperti ini
sumber
Kesalahan ini juga muncul jika partisi tempat
tmpdir
tinggal terisi (karena tabel perubahan atau lainnyasumber
Dalam kasus saya, ini karena partisi yang menghosting file ibdata1 sudah penuh.
sumber
Anda mungkin kehabisan ruang baik di partisi tempat tabel mysql disimpan (biasanya / var / lib / mysql) atau di tempat tabel sementara disimpan (biasanya / tmp).
Anda mungkin ingin: - memantau ruang kosong Anda selama pembuatan indeks. - arahkan variabel tmpdir MySQL ke lokasi lain. Ini membutuhkan restart server.
sumber
Saya juga menghadapi kesalahan ini saat mengimpor file database 8GB sql. Memeriksa drive instalasi mysql saya. Tidak ada ruang tersisa di drive. Jadi dapatkan beberapa ruang dengan menghapus item yang tidak diinginkan dan jalankan kembali perintah impor database saya. Kali ini berhasil.
sumber
Jika Anda menggunakan NDBCLUSTER sebagai mesin penyimpanan, Anda harus meningkatkan
DataMemory
danIndexMemory
.Mysql FQA
sumber
Kecuali Anda mengaktifkan
innodb_file_per_table
opsi,InnoDB
simpan semua data dalam satu file, biasanya disebutibdata1
.Periksa ukuran file itu dan periksa apakah Anda memiliki cukup ruang disk di drive tempatnya berada.
sumber
kami memiliki: SQLSTATE [HY000]: Kesalahan umum: 1114 Tabel 'catalog_product_index_price_bundle_sel_tmp' penuh
diselesaikan dengan:
edit konfigurasi db:
nano /etc/my.cnf
tmp_table_size = 256 juta max_heap_table_size = 256 juta
sumber
Mengutip Dokumen MySQL.
sumber
dalam kasus saya, itu hanya karena server mysql berjalan bersama dengan aplikasi, yang menulis terlalu banyak log sehingga disk penuh.
Anda dapat memeriksa apakah disk memiliki penggunaan ruang yang cukup
jika persentase penggunaan disk 100%, Anda dapat menggunakan perintah ini untuk menemukan direktori mana yang terlalu besar
sumber
PENGGUNA DOCKER: Ini juga terjadi ketika Anda telah mencapai sekitar 90% dari batas ukuran gambar Docker Anda (sepertinya 10% diperlukan untuk caching atau lebih). Kata-katanya membingungkan, karena ini berarti jumlah ruang disk yang dapat digunakan Docker untuk semuanya.
Untuk memperbaikinya, buka pengaturan desktop Docker> Disk> gerakkan slider sedikit lebih ke kanan> Terapkan.
sumber
Di CentOS 7 cukup hentikan dan mulai layanan MySQL, perbaiki ini untuk saya.
sudo service mysql stop
sudo service mysql start
sumber
Saya menghadapi masalah yang sama karena ruang disk yang rendah. Dan partisi yang menghosting file ibdata1 yang merupakan tablespace sistem untuk infrastruktur InnoDB sudah penuh.
sumber
Saya mengalami masalah ini ... dalam kasus saya, saya kehabisan penyimpanan di server khusus saya. Periksa apakah semuanya gagal dan pertimbangkan untuk menambah ruang disk atau menghapus data atau file yang tidak diinginkan.
sumber
Dalam kasus saya, memori server penuh sehingga DB tidak dapat menulis data temp. Untuk mengatasinya, Anda hanya perlu membuat beberapa tempat di drive Anda.
sumber
Saya memperbaiki masalah ini dengan meningkatkan jumlah memori yang tersedia untuk VM gelandangan tempat database berada.
sumber
Dalam kasus saya, saya mencoba menjalankan perintah alter table dan ruang disk yang tersedia kurang dari ukuran tabel. Sekali, saya menambah ruang disk, masalahnya hilang.
sumber
Disk ini penuh di / var / www / mysql
sumber
Ini juga bisa menjadi batas InnoDB untuk jumlah transaksi terbuka:
http://bugs.mysql.com/bug.php?id=26590
sumber