Php MySQL错误:表不存在';不存在于发动机中,可以';t丢弃表空间,可以';t为外键约束创建具有相同名称的表

Php MySQL错误:表不存在';不存在于发动机中,可以';t丢弃表空间,可以';t为外键约束创建具有相同名称的表,php,mysql,phpmyadmin,Php,Mysql,Phpmyadmin,我对mysql和html/php相当陌生 这是我的问题的一个更详细的长版本,我将在文章的末尾做一个总结: 我一直在使用xampp在本地开发一个站点,所以我使用phpmyadmin作为开发的DDL部分。 当我在php代码中以错误的方式将变量从一个页面传递到另一个页面时,问题就开始了(这个值应该是0000000001,而不是0)。在该脚本中,该值用于INSERT INTO查询。问题是我们正在讨论的值被插入到一个带有外键约束的列中,但是这个值没有指向父表中的任何主键(我猜这就是问题所在,因为这是它开始

我对mysql和html/php相当陌生

这是我的问题的一个更详细的长版本,我将在文章的末尾做一个总结:

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

因此,总结如下: 我想让我的代码和我自己再次访问这个表,或者再次创建它

该表已标记为正在使用,我无法访问它。 如果我试图删除它并放弃表空间,我会得到错误#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
  • 是的,我明确地删除了表空间
  • 我想保留删除/重新安装选项作为最后手段

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

删除(并重新创建)另一个表上的外键索引?或者简单地创建一个具有不同名称的新表?或者尝试重新启动MySQL,这可能与帮助相关:。当我遇到类似的问题时,唯一可以修复它的方法就是删除(并清除)MySQL,然后重新安装.Ddi。你真的明确地说了吗?表空间不会自动删除。必须使用DROP表空间显式删除表空间。DROP DATABASE在这方面没有效果,即使该操作删除了属于该表空间的所有表。