MySQL错误:表在引擎中不存在,无法丢弃表空间,无法为外键约束创建具有相同名称的表

时间:2019-11-27 10:22:35

标签: php mysql phpmyadmin

我是mysql和html / php的新手。

这是我问题的详细而又冗长的版本,我将在帖子末尾添加一个摘要:

我一直在使用xampp在本地开发站点,因此我将phpmyadmin用于开发的DDL部分。 问题开始于在我的php代码中,我似乎以一种错误的方式将变量从一页传递到另一页(此值应该像0000000001一样,而是为0)。在此脚本中,此值用于INSERT INTO查询中。问题是我们正在讨论的值已插入具有外键约束的列中,但是此值未指向父表中的任何主键(我猜这是问题所在,因为这是它的所在位置)所有人都开始走下坡路)。突然,phpmyadmin中的表被标记为“正在使用”,并且我开始收到错误#1932“引擎中不存在表”。因此,我尝试删除它并丢弃表空间:DROP TABLE正常工作(该表从db视图中消失,即使它始终显示errno 1932),但是由于它一直告诉我该表没有,所以我无法丢弃该表空间。存在。在mysql文件中,我可以看到.frm文件消失了,但是.ibd没有了。因此,我尝试手动删除它,以便能够再次创建该表(因为如果我尝试重新创建该表,我被告知首先要丢弃该表空间,但是由于我一直被告知要删除该表空间,所以我无法将其丢弃,这太疯狂了表不存在)。如果我尝试再次使用phpmyadmin UI创建表,则会收到引用错误#150的错误#1005。因此,通过在线检查,我得到的想法是必须完全按原样重新创建表,因此从控制台我写下了CREATE TABLE查询,包括外键约束,如错误日志的“最新外键错误”部分所示。 ,但出现错误#121。

SO,总结: 我想让我的代码和我自己可以再次访问此表,或者再次创建它。

该表已被标记为正在使用,我无法访问它。 如果我尝试删除它并丢弃表空间,则会收到错误#1932。 如果尝试重新创建它,则会因为它已经存在,由于必须先丢弃表空间或因为我的外键约束格式不正确而出错。 如果我尝试通过指定约束来重新创建它,则会收到错误消息,因为约束已经存在。

这是我用来创建指定约束条件的表的查询

CREATE TABLE `dbsmartcity`.`copertura` ( 
    `Luogo` INT(10) UNSIGNED ZEROFILL NOT NULL ,
    `Rete` INT(10) UNSIGNED ZEROFILL NOT NULL,
    CONSTRAINT `copertura_ibfk_1` FOREIGN KEY (`Luogo`) REFERENCES `luoghi` (`IDLuogo`) 
        ON DELETE CASCADE ON UPDATE CASCADE
)
ENGINE = InnoDB DEFAULT CHARSET=utf8;
  • 是的,我已经重新启动了MySQL。
  • 是的,我明确删除了表空间。
  • 我想保留删除/重新安装选项作为最后的选择。

抱歉,如果我在这篇文章中的某个地方不清楚。请帮助我,我的考试快到了。非常感谢您的帮助。

0 个答案:

没有答案