Eu tenho uma tabela específica para a qual não posso adicionar uma chave:
mysql> ALTER TABLE tasks ADD KEY `fruitful_user_count` (`user_id`, `is_fruitful`);
ERROR 1034 (HY000): Incorrect key file for table 'tasks'; try to repair it
Pesquisando o problema, parece que esse problema geralmente é um problema de configuração ou um problema de espaço em disco . Na verdade, esse banco de dados está sendo executado em uma instância do Amazon RDS , o que significa que é basicamente um servidor gerenciado dedicado ao MySQL com uma configuração muito padrão. Além disso, o disco alocado para nós está apenas 25% cheio.
Considerando que talvez o disco na VM (alimentado por Xen, acredito) esteja cheio, e não meu espaço em disco alocado, que provavelmente nem está na mesma sala (armazenamento de rede), reiniciei a instância do RDS na esperança de obter uma nova instância em outra VM. No entanto, isso não ajudou.
Qual deve ser minha próxima etapa de solução de problemas?
Esta é a tabela:
mysql> show create table tasks;
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| tasks | CREATE TABLE `tasks` (
`user_id` char(32) NOT NULL,
`module_id` int(11) NOT NULL DEFAULT '0',
`is_successful` tinyint(1) DEFAULT NULL,
`is_fruitful` tinyint(1) DEFAULT NULL,
`last_run` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`last_pulled` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`user_id`,`module_id`),
KEY `phone_scrapes_user` (`user_id`),
KEY `phone_scrapes_module` (`module_id`),
KEY `urgency` (`last_pulled`,`last_run`),
KEY `successful_user_count` (`user_id`,`is_successful`),
KEY `is_successful` (`is_successful`),
KEY `fruitness` (`is_fruitful`,`is_successful`),
CONSTRAINT `tasks_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`),
CONSTRAINT `tasks_ibfk_2` FOREIGN KEY (`module_id`) REFERENCES `modules` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)
Tente reparar a tabela:
Soluções sugeridas:
REPAIR TABLE table_name;
cnf
arquivo para um novo local com espaço maior;Quando estamos fazendo Alter no innodb, o "tmpdir" precisa ser observado. O Erro 1034: O reparo da chave é definitivamente devido ao "tmpdir" cheio e sua alteração gerará o erro. Portanto, sugiro que, quando o Alter for acionado, dê mais uma olhada na utilização do seu "tmpdir". Se o tmp estiver usando 100%, você poderá ver esse erro com certeza :).