Erro: The table is full
exitem alguns casos diferentes nos quais você pode obter este erro:
- Você está usando um versão mais antiga do MariaDB (antes da 3.23.0) quando uma tabela temporária em memória se torna maior que
tmp_table_sizebytes. Para evitar este problema, você pode utilizar a opção-O tmp_table_size=#para fazer omysqldaumentar o tamanho da tabela temporária ou usar a opção SQLSQL_BIG_TABLESantes de disparar a consulta problematica. Leia "Sintaxe deSET".Você também pode iniciar
mysqldcom a opção--big-tables. Isto é extamente o mesmo que usarSQL_BIG_TABLESpara toadas as consultas.No MariaDB Versão 3.23, se uma tabelas temporárias em memória se torna maior que
tmp_table_size, o servido automaticamente a converte para tabelas em discoMyISAM. - Você está usando tabelas
InnoDBe fica sem espaço no tablespace doInnoDB. Neste cado a solução é extender o tablespace doInnoDB. - Você está usando tabelas
ISAMouMyISAMem um SO que só suporta arquivos de 2G e você alcançou este limite para os arquivos de dado ou índice. - Você está usando tabelas
MyISAMe o dado necessário ou tamanho do índice é maior que alqueles para os quais o MariaDB alocou ponteiros. (Se você não especificarMAX_ROWSparaCREATE TABLEo MariaDB só alocará ponteriros para guardar 4G de dados).Você pode verificar o tamanho máximo do dados/índice fazendo
SHOW TABLE STATUS FROM database LIKE 'nome_tabela';
ou usando
myisamchk -dv database/nome_tabela.Se este é o problema, você pode corrigí-lo fazendo algo como:
ALTER TABLE nome_tabela MAX_ROWS=1000000000 AVG_ROW_LENGTH=nnn;
Você só precisa especificar
AVG_ROW_LENGTHpara tabelas com camposBLOB/TEXTjá que neste caso o MariaDB não pode otimizar o espaço necessário baseado apenas no número de linhas.