我对MySQL有一个奇怪的问题,我无法创建一个表。 该表曾经存在,它是每天加载到临时表的作业的一部分,然后在最后截断该表。几个月后,桌子消失了(也许有人放弃了,没关系)我去重建它但是我得到了这个错误:
Level Code Message
Error 1005 Can't create table 'apps.raw_appsites_stage' (errno: -1)
我无法删除表或重建它。但如果改变表名,我可以建立它 因此,似乎表格已被删除,但命名空间仍然保留或滞后于后端。
这是不起作用的ddl:
create table raw_appsites_stage(t int);
但是这个ddl确实有效:
create table raw_appsites_stage_1(t int);
我正在使用RDS实例,因此我无法访问服务器本身。这是版本信息:
Variable_name Value
innodb_version 5.5.40
protocol_version 10
slave_type_conversions
version 5.5.40-log
version_comment Source distribution
version_compile_machine x86_64
version_compile_os Linux
如何查看此名称的位置以及为何不让我删除或创建具有此名称的表格?
更新 我尝试在那张桌子上重命名并得到一个我以前从未见过的新错误:
Can't find file: './apps/raw_appsites_stage.frm' (errno: 2)
所以它在后端肯定是个时髦的东西,但是这个和RDS实例我无法访问机器操作系统。 有人知道解决这个问题吗?我需要等待AWS支持吗?
由于
答案 0 :(得分:3)
好的,如果您使用InnoDB
作为引擎。不知何故,您丢失了raw_appsites_stage.frm
和raw_appsites_stage.ibd
个文件。数据字典仍然有该表的条目。
现在你不能删除表,因为mysqld会首先查找.frm文件。
您可以尝试check
和repair table raw_appsites_stage
(如果不是InnoDB)
或者,mysqldump
备份ibdata1,然后删除ibdata1并恢复。详情Here