Php MySQL ALTER TABLE删除表

Php MySQL ALTER TABLE删除表,php,mysql,sql,database,innodb,Php,Mysql,Sql,Database,Innodb,我吓坏了。我在一家不备份MySQL数据库的公司工作。为了提高项目描述的最大字符数,我必须更改表items中的一列。我使用了以下命令: ALTER TABLE items CHANGE description description varchar(5000) NOT NULL; 但是,在我输入此命令后,我得到了以下错误: Error on rename of './company/#sql-b30_400ad' to './company/items' (errno: 150 - Foreig

我吓坏了。我在一家不备份MySQL数据库的公司工作。为了提高项目描述的最大字符数,我必须更改表items中的一列。我使用了以下命令:

ALTER TABLE items CHANGE description description varchar(5000) NOT NULL;
但是,在我输入此命令后,我得到了以下错误:

Error on rename of './company/#sql-b30_400ad' to './company/items' (errno: 150 - Foreign key constraint is incorrectly formed)
现在,桌子完全不见了。有没有办法访问sql-b30_400ad表来恢复它?我知道使用以下方法从此表中删除了一个键:

SET foreign_key_checks = 0;
ALTER TABLE items DROP KEY foreign_key_name;
SET foreign_key_checks = 1;
是否有任何方法可以撤消发生的情况,或恢复为ALTER命令创建的临时项表

编辑:该表使用InnoDB引擎


再次编辑:所以我发现,由于我们在MySQL服务器上使用AmazonWeb服务,AWS每天都会自动对其进行备份,最后一次备份是在我出错前15分钟。我的裤子现在是棕色和黄色的,但一切都很好,我向所有回答的人表示感谢

您可以阅读有关该命令的文档:

check
repair
工具呢

mysqlcheck
myisamchk
...
我的建议:但首先,如果数据非常重要,出于安全原因,您可能必须停止磁盘上的任何读/写过程,并且可能会停止磁盘

将来:在进行任何修改之前,始终要进行您自己的备份,即使对于这些修复/检查命令也是如此

mysqldump 
mysqlhotcopy 
检查这个

是生产数据库还是开发数据库,如果是开发,我不会担心,

请检查。它允许直接从InnoDB表空间读取记录


sql-b30_400ad是一个具有新结构的文件。所以,用stream_解析器拆分它,然后用c_解析器提取记录。请看,您的案例非常符合描述。

我尝试过从sql-b30_400ad执行SELECT*,但它说该表不存在。很抱歉,一旦删除,它就不存在了。但是它可能会对你有所帮助。我怀疑一旦它被删除,它就会被大量使用。如果你在那里工作并修改表,你就不能说“他们的MySQL数据库”。这也是你的数据库但是关于恢复没有任何内容。@user2178195,这有帮助吗?这些命令仅用于MyISAM表。他们对InnoDB表不做任何处理