it-swarm-eu.dev

ERROR 1114 (HY000): Tabulka je plná

Snažím se přidat řádek do tabulky InnoDB s jednoduchým dotazem:

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

Když se ale pokusím o tento dotaz, dostanu následující:

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

Dělat "SELECT COUNT (*) FROM Zip_codes" mi dává 188,959 řádků, což se nezdá být příliš mnoho, protože mám jinou tabulku s 810,635 řádky ve stejné databázi.

Jsem docela nezkušený s InnoDB motorem a nikdy jsem nezažil tento problém s MyISAM. Jaké jsou zde nějaké potenciální problémy?

EDIT: K tomu dochází pouze při přidávání řádku do tabulky Zip_codes.

86
Wickethewok

EDIT: První kontrola, pokud jste nevyčerpali místo na disku, před vyřešením rozlišení souvisejícího s konfigurací.

Zdá se, že máte příliš nízkou maximální velikost innodb_data_file_path ve vašem my.cnf, V tomto příkladu

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

nelze kombinovat více než 512 MB dat ve všech tabulkách inodbb.

Možná byste měli přepnout na režim inodb-na-stůl pomocí innodb_file_per_table.

76
Martin C.

Dalším možným důvodem je, že oddíl je plný - to je to, co se mi teď stalo.

74
maaartinus

Dostanete také stejnou chybu ERROR 1114 (HY000): Tabulka '# sql-310a_8867d7f' je plná

pokud se pokusíte přidat index do tabulky, která používá paměť úložiště.

23
Green Card

Je třeba upravit limit limit nastavený v my.cnf pro tabulky INNO_DB. Tento limit paměti není nastaven pro jednotlivé tabulky, je nastaven pro všechny tabulky dohromady.

Pokud chcete, aby se paměť automaticky rozšířila na 512 MB 

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

Pokud limit nepoznáte nebo nechcete omezit limit, můžete ho upravit takto

innodb_data_file_path = ibdata1:10M:autoextend
16
cleanunicorn

Tato chyba se také zobrazí, pokud oddíl, na kterém je tmpdir, se vyplní (kvůli změněné tabulce nebo jiné

10
fimbulvetr

V mém případě to bylo proto, že oddíl hostující soubor ibdata1 byl plný.

9
skiphoppy

V prostoru, kde jsou uloženy tabulky mysql (obvykle/var/lib/mysql) nebo kde jsou uloženy dočasné tabulky (obvykle/tmp), může být nedostatek místa.

Možná budete chtít: - sledovat volné místo během vytváření indexu. - umístěte proměnnou tmpdir MySQL na jiné místo. To vyžaduje restart serveru.

9
Julio

Pokud jako úložný stroj používáte NDBCLUSTER, měli byste zvýšit DataMemory a IndexMemory.

Mysql FAQ

7
metdos

I já jsem čelil této chybě při importu 8 GB sql databázový soubor. Zkontroloval jsem svou instalační jednotku mysql. V jednotce nebylo žádné místo. Tak dostal nějaký prostor odstraněním nechtěných položek a znovu spustil příkaz importu databáze. Tentokrát to bylo úspěšné.  

6
Arun Kumar

Pokud jste nepovolili volbu innodb_file_per_table, InnoDB uchovává všechna data v jednom souboru, obvykle nazývaném ibdata1.

Zkontrolujte velikost tohoto souboru a zkontrolujte, zda je na disku dostatek místa na disku.

5
Quassnoi

měli jsme: SQLSTATE [HY000]: Obecná chyba: 1114 Tabulka 'catalog_product_index_price_bundle_sel_tmp' je plná

řešeno: 

upravit konfiguraci db:

nano /etc/my.cnf

tmp_table_size = 256M max_heap_table_size = 256M

  • restart db 
3
Sition

Citovat dokumenty MySQL.

Modul úložiště InnoDB udržuje tabulky InnoDB v tabulkovém prostoru, který lze vytvořit z několika souborů. To umožňuje, aby tabulka překročila maximální velikost jednotlivých souborů. Tablepace může obsahovat diskové oddíly, které umožňují extrémně velké tabulky. Maximální velikost tabulkového prostoru je 64TB.

Pokud používáte InnoDB tabulky a běží mimo místnost v InnoDB tablespace. V tomto případě je řešením rozšířit InnoDB tablespace. Viz oddíl 13.2.5, [„Přidávání, odebírání nebo změna velikosti dat InnoDB a souborů protokolu“.]

2
Ólafur Waage

Zažil jsem tento problém ... v mém případě by mi došel na úložišti na mém dedikovaném serveru. Zkontrolujte, zda-li vše ostatní selže, a zvažte zvýšení místa na disku nebo odstranění nežádoucích dat nebo souborů.

1
NotJay

V mém případě byla paměť serveru plná, takže DB nemohla zapsat data temp. Chcete-li to vyřešit, stačí, abyste na svém disku udělali nějaké místo.

v mém případě je to jen proto, že server mysql běží společně s aplikací, která zapisuje příliš mnoho protokolů, že je disk plný. 

můžete zkontrolovat, zda má disk dostatek místa

df -h

pokud je procento využití disku 100%, můžete pomocí tohoto příkazu zjistit, který adresář je příliš velký

du -h -d 1 /
1
kite

Byl jsem vystaven stejnému problému z důvodu nízkého místa na disku. Oddíl, který je hostitelem souboru ibdata1, což je systémový tabulkový prostor pro infrastrukturu InnoDB, byl plný.

1

V mém případě jsem se snažil spustit příkaz alter table a dostupné místo na disku bylo menší než velikost tabulky. Jednou jsem zvětšil místo na disku, co problém zmizel.

0
Pratik Singhal

Tento problém jsem vyřešil zvýšením množství paměti dostupné pro tuláka VM, kde byla databáze umístěna. 

0
yvoloshin

Na CentOS 7 to prostě zastavilo a spustilo službu MySQL.

Sudo service mysql stop

Sudo service mysql start

0
crmpicco