ERRO 1114 (HY000): A tabela está cheia

Estou tentando adicionar uma linha a uma tabela InnoDB com uma simples consulta:

INSERT INTO zip_codes (zip_code, city) VALUES ('90210', 'Beverly Hills'); 

Mas quando eu tento essa consulta, recebo o seguinte:

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

Fazendo um “SELECT COUNT (*) FROM zip_codes” me dá 188,959 linhas, o que não parece muito, considerando que eu tenho outra tabela com 810.635 linhas no mesmo database.

Eu sou relativamente inexperiente com o mecanismo InnoDB e nunca tive esse problema com o MyISAM. Quais são alguns dos possíveis problemas aqui?

EDIT: Isso ocorre apenas ao adicionar uma linha à tabela zip_codes.

EDIT: primeira verificação, se você não ficar sem espaço em disco, antes de resolver a resolução relacionada à configuração.

Você parece ter um tamanho máximo muito baixo para o seu innodb_data_file_path no seu my.cnf , neste exemplo

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

você não pode hospedar mais de 512MB de dados em todas as tabelas innodb combinadas.

Talvez você deva mudar para um esquema innodb-per-table usando innodb_file_per_table .

Outro motivo possível é a partição estar cheia – isso é exatamente o que aconteceu comigo agora.

Você também receberá o mesmo erro ERROR 1114 (HY000): A tabela ‘# sql-310a_8867d7f’ está cheia

se você tentar adicionar um índice a uma tabela que esteja usando o mecanismo de armazenamento MEMORY.

Você precisa modificar o limite definido em my.cnf para as tabelas INNO_DB. Este limite de memory não está definido para tabelas individuais, é definido para todas as tabelas combinadas.

Se você quiser que a memory seja estendida automaticamente para 512MB

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

Se você não sabe o limite ou não quer colocar um limite, você pode modificá-lo assim

 innodb_data_file_path = ibdata1:10M:autoextend 

Este erro também aparece se a partição na qual o tmpdir reside é preenchida (devido a uma tabela de alteração ou outra

No meu caso, isso ocorreu porque a partição que hospeda o arquivo ibdata1 estava cheia.

Você pode estar ficando sem espaço na partição onde as tabelas mysql estão armazenadas (geralmente / var / lib / mysql) ou onde as tabelas temporárias são armazenadas (geralmente / tmp).

Você pode querer: – monitorar seu espaço livre durante a criação do índice. – aponte a variável tmpdir do MySQL para um local diferente. Isso requer uma reboot do servidor.

Se você usar o NDBCLUSTER como mecanismo de armazenamento, deverá aumentar o DataMemory e o IndexMemory .

FQA do Mysql

Eu também enfrentei esse erro ao importar um arquivo de database sql de 8GB. Verifiquei minha unidade de instalação do mysql. Não havia espaço no drive. Então, obtive algum espaço removendo itens indesejados e executei novamente o comando my database import. Desta vez foi bem sucedido.

A menos que você habilite a opção innodb_file_per_table , o InnoDB mantém todos os dados em um arquivo, geralmente chamado ibdata1 .

Verifique o tamanho desse arquivo e verifique se há espaço em disco suficiente na unidade em que ele reside.

nós tivemos: SQLSTATE [HY000]: Erro geral: 1114 A tabela ‘catalog_product_index_price_bundle_sel_tmp’ está cheia

resolvido por:

editar configuração do database:

nano /etc/my.cnf

tmp_table_size = 256M max_heap_table_size = 256 milhões

  • reiniciar db

Para citar os documentos do MySQL.

O mecanismo de armazenamento InnoDB mantém tabelas InnoDB dentro de um espaço de tabela que pode ser criado a partir de vários arquivos. Isso permite que uma tabela exceda o tamanho máximo de arquivo individual. O espaço de tabela pode include partições de disco bruto, o que permite tabelas extremamente grandes. O tamanho máximo do espaço de tabelas é de 64 TB.

Se você estiver usando tabelas InnoDB e ficar sem espaço no tablespace do InnoDB. Neste caso, a solução é estender o espaço de tabelas InnoDB. Veja Seção 13.2.5, “Adicionando, Removendo ou Redimensionando Arquivos de Dados e Registros InnoDB”.

No meu caso, a memory do servidor estava cheia, então o database não pôde gravar os dados temporários. Para resolvê-lo, você só tem que fazer algum lugar na sua unidade.

Eu enfrentei o mesmo problema por causa do baixo espaço em disco. E a partição que está hospedando o arquivo ibdata1, que é o espaço de tabela do sistema para a infra-estrutura do InnoDB, estava cheia.

Eu estava passando por esse problema … no meu caso, acabei ficando sem armazenamento no meu servidor dedicado. Verifique se tudo o mais falhará e considere aumentar o espaço em disco ou remover dados ou arquivos indesejados.

No CentOS 7, simplesmente parar e iniciar o serviço MySQL consertou isso para mim.

sudo service mysql stop

sudo service mysql start

Este também poderia ser o limite do InnoDB para o número de transactions abertas:

http://bugs.mysql.com/bug.php?id=26590

em 1024 transactions, que têm undo registros (como em todos os dados editados), o InnoDB não funcionará