pengembangan-web-mp.com

GALAT 1114 (HY000): Tabel sudah penuh

Saya mencoba menambahkan baris ke tabel InnoDB dengan pertanyaan sederhana:

INSERT INTO Zip_codes (Zip_code, city) VALUES ('90210', 'Beverly Hills');

Tetapi ketika saya mencoba permintaan ini, saya mendapatkan yang berikut:

ERROR 1114 (HY000): The table `Zip_codes` is full

Melakukan "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 mesin InnoDB dan tidak pernah mengalami masalah ini dengan MyISAM. Apa beberapa masalah potensial di sini?

EDIT: Ini hanya terjadi ketika menambahkan baris ke tabel Zip_codes.

86
Wickethewok

EDIT: Pemeriksaan pertama, jika Anda tidak kehabisan ruang disk, sebelum menyelesaikan ke resolusi terkait konfigurasi.

Anda tampaknya memiliki ukuran maksimum terlalu rendah untuk innodb_data_file_path Anda di my.cnf Anda, Dalam contoh ini

innodb_data_file_path = ibdata1:10M:autoextend:max:512M

anda tidak dapat meng-host lebih dari 512MB data di semua tabel innodb digabungkan.

Mungkin Anda harus beralih ke skema innodb-per-tabel menggunakan innodb_file_per_table.

76
Martin C.

Alasan lain yang mungkin adalah partisi menjadi penuh - inilah yang terjadi pada saya sekarang.

74
maaartinus

Anda 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.

23
Green Card

Anda perlu mengubah batas batas yang ditetapkan di my.cnf untuk tabel INNO_DB. Batas memori ini tidak diatur untuk masing-masing tabel, itu diatur untuk semua tabel yang digabungkan.

Jika Anda ingin memori diperpanjang secara otomatis ke 512MB 

innodb_data_file_path = ibdata1:10M:autoextend:max:512M

Jika Anda tidak tahu batas atau tidak ingin membatasi batas, Anda dapat memodifikasinya seperti ini

innodb_data_file_path = ibdata1:10M:autoextend
16
cleanunicorn

Kesalahan ini juga muncul jika partisi tempat tmpdir berada terisi (karena tabel perubahan atau lainnya

10
fimbulvetr

Dalam kasus saya, ini karena partisi yang menampung file ibdata1 penuh.

9
skiphoppy

Anda mungkin kehabisan ruang baik di partisi tempat tabel mysql disimpan (biasanya/var/lib/mysql) atau di mana tabel sementara disimpan (biasanya/tmp).

Anda mungkin ingin: - Memantau ruang kosong Anda selama pembuatan indeks. - arahkan variabel tmpdir MySQL ke lokasi yang berbeda. Ini membutuhkan server restart.

9
Julio

Jika Anda menggunakan NDBCLUSTER sebagai mesin penyimpanan, Anda harus meningkatkan DataMemory dan IndexMemory.

FAQ Mysql

7
metdos

Saya juga menghadapi kesalahan ini ketika mengimpor file database 8GB sql. Memeriksa drive instalasi mysql saya. Tidak ada ruang yang tersisa di drive. Jadi ada ruang dengan menghapus item yang tidak diinginkan dan menjalankan kembali perintah impor database saya Kali ini berhasil.  

6
Arun Kumar

Kecuali Anda mengaktifkan opsi innodb_file_per_table, InnoDB menyimpan semua data dalam satu file, biasanya disebut ibdata1.

Periksa ukuran file itu dan periksa apakah Anda memiliki cukup ruang disk di drive tempat ia berada.

5
Quassnoi

kami punya: SQLSTATE [HY000]: Kesalahan umum: 1114 Tabel 'catalog_product_index_price_bundle_sel_tmp' penuh

dipecahkan oleh: 

edit konfigurasi db:

nano /etc/my.cnf

tmp_table_size = 256M max_heap_table_size = 256M

  • restart db 
3
Sition

Mengutip Dokumen MySQL.

Mesin penyimpanan InnoDB mempertahankan tabel InnoDB dalam tablespace yang dapat dibuat dari beberapa file. Ini memungkinkan tabel melebihi ukuran file maksimum individu. Tablespace dapat menyertakan partisi disk mentah, yang memungkinkan tabel sangat besar. Ukuran tablespace maksimum adalah 64TB.

Jika Anda menggunakan tabel InnoDB dan kehabisan ruang di tablespace InnoDB. Dalam hal ini, solusinya adalah memperluas tablespace InnoDB. Lihat Bagian 13.2.5, [“Menambah, Menghapus, atau Mengubah Ukuran Data InnoDB dan File Log”.]

2
Ólafur Waage

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.

1
NotJay

Dalam kasus saya, memori server penuh sehingga DB tidak dapat menulis data temp. Untuk mengatasinya, Anda hanya perlu membuat beberapa tempat di drive Anda.

dalam kasus saya, itu hanya karena server mysql berjalan bersama dengan suatu aplikasi, yang menulis terlalu banyak log sehingga disk penuh. 

anda dapat memeriksa apakah disk memiliki cukup ruang untuk digunakan

df -h

jika persentase penggunaan disk adalah 100%, Anda dapat menggunakan perintah ini untuk menemukan direktori mana yang terlalu besar

du -h -d 1 /
1
kite

Saya menghadapi masalah yang sama karena ruang disk yang rendah. Dan partisi yang menampung file ibdata1 yang merupakan tablespace sistem untuk infrastruktur InnoDB penuh.

1

Dalam kasus saya, saya mencoba menjalankan perintah alter table dan ruang disk yang tersedia kurang dari ukuran tabel. Suatu kali, saya menambah ruang disk yang masalahnya hilang.

0
Pratik Singhal

Saya memperbaiki masalah ini dengan meningkatkan jumlah memori yang tersedia untuk gelandangan VM di mana basis data berada. 

0
yvoloshin

Pada CentOS 7 cukup menghentikan dan memulai layanan MySQL memperbaikinya untuk saya.

Sudo service mysql stop

Sudo service mysql start

0
crmpicco