phpmyadmin 找不到外键格式不正确的原因

2fjabf4q  于 2022-11-09  发布在  PHP
关注(0)|答案(1)|浏览(154)

有时当我关闭xampp本地服务器时,某个表“正在使用”,我无法打开或删除它,所以我选择最后一个备份并删除基表,这是不可能的,因为表正在使用中。
在堆栈溢出,有人说要手动删除我的phpmyadmin文件夹中的MySQL数据,ibd和frm文件。但后来我试图导入我的备份,它说“外键格式不正确”。
当我去细节它显示这一点:
最新外键错误
2019-05-15 17:09:40 1c 6c表service_tunnels/se_situer_a的外键约束中出现错误:表中不存在将包含作为第一列的列的索引,或者表中的数据类型与被引用表中的数据类型不匹配,或者ON... SET NULL列之一被声明为NOT NULL。约束:,
CONSTRAINT“FK_Se_situer_a_IDemplacement”外键(“IDemplacement”)引用“位置”(“IDemplacement”)
下面是表placement和表se_situer_a的sql部分:

DROP TABLE IF EXISTS `emplacement`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `emplacement` (
  `IDEmplacement` int(11) NOT NULL,
  `NomEmplacement` varchar(50) COLLATE latin1_general_ci DEFAULT NULL,
  `PointKilometrique` float DEFAULT NULL,
  `NumLocal` int(11) NOT NULL,
  `CodeOuvrage` varchar(25) COLLATE latin1_general_ci NOT NULL,
  PRIMARY KEY (`IDEmplacement`,`NumLocal`,`CodeOuvrage`),
  KEY `FK_Emplacement_CodeOuvrage` (`CodeOuvrage`),
  CONSTRAINT `FK_Emplacement_CodeOuvrage` FOREIGN KEY (`CodeOuvrage`) REFERENCES `ouvrage` (`CodeOuvrage`),
  CONSTRAINT `FK_Emplacement_NumLocal` FOREIGN KEY (`NumLocal`) REFERENCES `local` (`NumLocal`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;

DROP TABLE IF EXISTS `se_situer_a`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `se_situer_a` (
  `DateMiseEnPlace` date DEFAULT NULL,
  `DateEnlevement` date DEFAULT NULL,
  `IDEquipement` int(11) NOT NULL,
  `DateEmplacement` date NOT NULL,
  `IDEmplacement` int(11) NOT NULL,
  `NumLocal` int(11) NOT NULL,
  `CodeOuvrage` varchar(25) COLLATE latin1_general_ci NOT NULL,
  PRIMARY KEY (`IDEquipement`,`DateEmplacement`,`IDEmplacement`,`NumLocal`,`CodeOuvrage`),
  KEY `FK_Se_situer_a_DateEmplacement` (`DateEmplacement`),
  KEY `FK_Se_situer_a_IDEquipement` (`IDEquipement`),
  KEY `FK_Se_situer_a_CodeOuvrage` (`CodeOuvrage`),
  CONSTRAINT `FK_Se_situer_a_CodeOuvrage` FOREIGN KEY (`CodeOuvrage`) REFERENCES `ouvrage` (`CodeOuvrage`),
  CONSTRAINT `FK_Se_situer_a_DateEmplacement` FOREIGN KEY (`DateEmplacement`) REFERENCES `dateemplacement` (`DateEmplacement`),
  CONSTRAINT `FK_Se_situer_a_IDEmplacement` FOREIGN KEY (`IDEmplacement`) REFERENCES `emplacement` (`IDEmplacement`),
  CONSTRAINT `FK_Se_situer_a_IDEquipement` FOREIGN KEY (`IDEquipement`) REFERENCES `equipement` (`IDEquipement`),
  CONSTRAINT `FK_Se_situer_a_NumLocal` FOREIGN KEY (`NumLocal`) REFERENCES `local` (`NumLocal`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;

我不知道为什么每次我重新启动我的计算机时它都会这样做,所以重新启动xampp。

b91juud3

b91juud31#

在MySQL中,外键不能引用非唯一字段,所以我必须删除所有与此匹配的外键。

相关问题