Estou tentando adicionar uma linha a uma InnoDB
tabela com uma consulta simples:
INSERT INTO zip_codes (zip_code, city) VALUES ('90210', 'Beverly Hills');
Mas quando tento essa consulta, obtenho o seguinte:
ERROR 1114 (HY000): A mesa
zip_codes
está cheia
Fazendo um
SELECT COUNT(*) FROM zip_codes
me dá 188.959 linhas, o que não parece muitos, considerando que tenho outra tabela com 810.635 linhas no mesmo banco de dados.
Sou bastante inexperiente com o InnoDB engine
e nunca tive esse problema com ele MyISAM
. Quais são alguns dos problemas potenciais aqui?
EDITAR: Isso ocorre apenas ao adicionar uma linha à zip_codes
tabela.
Respostas:
EDIT: Primeiro verifique, se você não ficou sem espaço em disco, antes de resolver para a resolução relacionada à configuração.
Você parece ter um tamanho máximo muito baixo para o
innodb_data_file_path
seumy.cnf
, neste exemplovocê não pode hospedar mais de 512 MB de dados em todas as tabelas do innodb combinadas.
Talvez você deva mudar para um esquema innodb-per-table usando
innodb_file_per_table
.fonte
/etc/mysql/
e está parcialmente dividido em arquivos adicionais em/etc/mysql/conf.d
innodb_data_file_path
linha/etc/mysql/mysql.conf.d/mysqld.cnf
e reiniciar os serviçosmysql
eapache2
Outra possível razão é a partição estar cheia - é exatamente o que aconteceu comigo agora.
fonte
df -h
para verificar o tamanho do discoVocê também obterá o mesmo erro ERROR 1114 (HY000): A tabela '# sql-310a_8867d7f' está cheia
se você tentar adicionar um índice a uma tabela que está usando o mecanismo de armazenamento MEMORY.
fonte
ALTER TABLE my_table ADD INDEX my_index (column_a, column_b);
funcionou.Você precisa modificar o limite definido em my.cnf para as tabelas INNO_DB. Este limite de memória não é definido para tabelas individuais, ele é definido para todas as tabelas combinadas.
Se você quiser que a memória se estenda automaticamente para 512 MB
Se você não sabe o limite ou não quer colocar um limite máximo, você pode modificá-lo assim
fonte
Este erro também aparece se a partição na qual
tmpdir
reside ficar cheia (devido a uma tabela de alteração ou outrofonte
No meu caso, isso aconteceu porque a partição que hospeda o arquivo ibdata1 estava cheia.
fonte
Você pode estar ficando sem espaço na partição onde as tabelas mysql são armazenadas (geralmente / var / lib / mysql) ou onde as tabelas temporárias estão armazenadas (geralmente / tmp).
Você pode querer: - monitorar seu espaço livre durante a criação do índice. - aponte a variável tmpdir MySQL para um local diferente. Isso requer a reinicialização do servidor.
fonte
Eu também enfrentei esse erro ao importar um arquivo de banco de dados sql de 8 GB. Verifiquei minha unidade de instalação do mysql. Não havia mais espaço na unidade. Consegui algum espaço removendo itens indesejados e executei novamente meu comando de importação de banco de dados. Desta vez foi um sucesso.
fonte
Se você usar NDBCLUSTER como mecanismo de armazenamento, deverá aumentar
DataMemory
eIndexMemory
.Mysql FQA
fonte
A menos que você habilite a
innodb_file_per_table
opção,InnoDB
mantém todos os dados em um arquivo, normalmente chamadoibdata1
.Verifique o tamanho desse arquivo e verifique se há espaço em disco suficiente na unidade em que ele reside.
fonte
tivemos: SQLSTATE [HY000]: Erro geral: 1114 A tabela 'catalog_product_index_price_bundle_sel_tmp' está cheia
resolvido por:
editar configuração do banco de dados:
nano /etc/my.cnf
tmp_table_size = 256M max_heap_table_size = 256M
fonte
Para citar os documentos do MySQL.
fonte
no meu caso, é só porque o servidor mysql roda junto com um aplicativo, que escreve muitos logs que o disco está cheio.
você pode verificar se o disco tem espaço suficiente para usar
se a porcentagem de uso do disco for 100%, você pode usar este comando para descobrir qual diretório é muito grande
fonte
USUÁRIOS DO DOCKER: Isso também acontece quando você atinge cerca de 90% do limite de tamanho da imagem do Docker (parece que 10% são necessários para o cache ou algo assim). O texto é confuso, pois isso significa simplesmente a quantidade de espaço em disco que o Docker pode usar para basicamente tudo.
Para corrigir, vá para as configurações da área de trabalho do Docker> Disco> mova o controle deslizante um pouco mais para a direita> Aplicar.
fonte
No CentOS 7, simplesmente parar e iniciar o serviço MySQL corrigiu isso para mim.
sudo service mysql stop
sudo service mysql start
fonte
Eu enfrentei o mesmo problema por causa de pouco espaço em disco. E a partição que hospeda o arquivo ibdata1, que é o espaço de tabela do sistema para a infraestrutura InnoDB, estava cheia.
fonte
Eu estava tendo esse problema ... no meu caso, fiquei 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.
fonte
No meu caso, a memória do servidor estava cheia, então o banco de dados não pôde gravar os dados temporários. Para resolvê-lo você só precisa fazer algum lugar na sua unidade.
fonte
Corrigi esse problema aumentando a quantidade de memória disponível para a VM vagrant onde o banco de dados estava localizado.
fonte
No meu caso, estava tentando executar um comando alter table e o espaço em disco disponível era menor que o tamanho da tabela. Uma vez, aumentei o espaço em disco e o problema foi embora.
fonte
Este disco está cheio em / var / www / mysql
fonte
Este também pode ser o limite InnoDB para o número de transações abertas:
http://bugs.mysql.com/bug.php?id=26590
fonte