dot*_*hen 3 mysql alter-table errors amazon-rds
我有一个特定的表,我无法为其添加密钥:
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
Run Code Online (Sandbox Code Playgroud)
谷歌搜索这个问题似乎这个问题通常是配置问题或磁盘空间问题。事实上,这个数据库运行在一个Amazon RDS实例上,这意味着它基本上是一个专用于MySQL的托管服务器,配置非常标准。此外,分配给我们的磁盘只有大约 25% 已满。
考虑到可能虚拟机上的磁盘(我相信由 Xen 提供支持)已满,而不是我分配的磁盘空间,甚至可能不在同一个房间(网络存储)中,我重新启动了 RDS 实例,希望我能得到另一个 VM 上的新实例。然而,这并没有帮助。
我的下一个故障排除步骤应该是什么?
这是表:
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)
Run Code Online (Sandbox Code Playgroud)
尝试修复表:
mysql> LOCK TABLES `fruitful_user_count` WRITE;
mysql> CREATE TABLE `fruitful_user_count_new` LIKE `fruitful_user_count`;
mysql> INSERT INTO `fruitful_user_count_new` SELECT * FROM `fruitful_user_count`;
mysql> RENAME TABLE `fruitful_user_count` TO `fruitful_user_count_old`;
mysql> RENAME TABLE `fruitful_user_count_new` TO `fruitful_user_count`;
mysql> UNLOCK TABLES;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3326 次 |
| 最近记录: |