MySQL:无法创建表:errno -1

ale*_*ton 5 mysql amazon-rds

我对MySQL有一个奇怪的问题,我无法创建一个表.该表曾经存在,它是每天加载到临时表的作业的一部分,然后在最后截断该表.几个月之后,桌子消失了(也许有人放弃它,没关系)我去重建它但是我得到了这个错误:

Level   Code    Message
Error   1005    Can't create table 'apps.raw_appsites_stage' (errno: -1)
Run Code Online (Sandbox Code Playgroud)

我不能放弃桌子或重建它.但如果改变表名,我可以构建它.
因此,似乎表格已被删除,但命名空间仍然保留或滞后于后端.

这是不起作用的ddl:

create table raw_appsites_stage(t int);
Run Code Online (Sandbox Code Playgroud)

但是这个ddl确实有效:

create table raw_appsites_stage_1(t int);
Run Code Online (Sandbox Code Playgroud)

我正在使用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
Run Code Online (Sandbox Code Playgroud)

如何查看此名称的位置以及为什么它不会让我删除或创建具有此名称的表?

更新 我尝试在该表上重命名并得到一个我从未见过的新错误:

Can't find file: './apps/raw_appsites_stage.frm' (errno: 2)
Run Code Online (Sandbox Code Playgroud)

所以它在后端肯定是一个时髦的东西,但是这个和RDS实例我无法访问机器操作系统.有人知道解决这个问题吗?我需要等待AWS支持吗?

谢谢

Ria*_*iad 3

好的,如果您用作InnoDB引擎。不知何故,你丢失了raw_appsites_stage.frmraw_appsites_stage.ibd文件。数据字典仍然有该表的条目。

现在你不能删除表,因为 mysqld 将首先查找 .frm 文件。

你可以尝试checkrepair table raw_appsites_stage如果不是InnoDB)

或者,备份 ibdata1,mysqldump然后删除 ibdata1 并恢复。详情请点击这里

  • 谢谢,好信息。不幸的是(?)我使用的是Innodb,所以我不能使用“修复表”和“检查表raw_appsites_stage;” 返回“错误:表'apps.raw_appsites_stage'不存在”,并且由于这是RDS,我无法访问文件系统,如您发布的非常详细的链接中所述。 (3认同)