Mysql Can';t约束两个连接表列

Mysql Can';t约束两个连接表列,mysql,foreign-key-relationship,junction-table,Mysql,Foreign Key Relationship,Junction Table,我有一个juction表,它包含两个外键(来自Profiles和Districts表),两个列都作为复合主键 `profID` int(11) NOT NULL, `distID` varchar(8) NOT NULL, PRIMARY KEY (`profID`,`distID`) 我想约束这两个列,但MySql抛出一个错误: #1050 - Table './database_name/z@002dprof@002ddist' already exists 在故障

我有一个juction表,它包含两个外键(来自Profiles和Districts表),两个列都作为复合主键

  `profID` int(11) NOT NULL,
  `distID` varchar(8) NOT NULL,
  PRIMARY KEY (`profID`,`distID`)
我想约束这两个列,但MySql抛出一个错误:

    #1050 - Table './database_name/z@002dprof@002ddist' already exists 
在故障排除过程中,我尝试从头开始创建另一个重复的连接表,但得到了相同的错误。奇怪的是,MySQL允许我约束一列或另一列,但不能约束两列。我被难住了,因为我还有其他(非连接)表,它们对多个外键列有约束

顺便说一下,我使用的是phpMyAdmin,所有的表都是使用utf-8的InnoDB

任何帮助都将不胜感激

添加:显示创建表结果

CREATE TABLE `Profiles` (
 `profID` int(11) NOT NULL AUTO_INCREMENT,
 `email` varchar(64) NOT NULL,
 `stID` varchar(2) NOT NULL,
 `zip` varchar(5) NOT NULL,
 PRIMARY KEY (`profID`),
 KEY `stID` (`stID`,`zip`),
 KEY `email` (`email`)
) ENGINE=InnoDB AUTO_INCREMENT=52 DEFAULT CHARSET=utf8

CREATE TABLE `Districts` (
 `distID` varchar(8) NOT NULL,
 `stID` varchar(2) NOT NULL,
 `abbrev` varchar(16) NOT NULL,
 PRIMARY KEY (`distID`),
 KEY `stID` (`stID`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8

CREATE TABLE `z-prof-dist` (
 `profID` int(11) NOT NULL,
 `distID` varchar(8) NOT NULL,
 PRIMARY KEY (`profID`,`distID`),
 KEY `distID` (`distID`),
 KEY `profID` (`profID`),
 CONSTRAINT `z-prof-dist_ibfk_1` FOREIGN KEY (`distID`) REFERENCES `Districts` (`distID`) 
    ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8

我想我找到了解决办法。我没有使用phpMyAdmin函数来添加约束(我一直在那里得到错误消息),而是遵循marekful的指导,使用SQL ALTER TABLE查询(具有新的约束名称),如下所示:


我仍然不理解原始错误的原因,但我可以看到新添加的外键约束工作得很好。

我想我找到了一个修复方法。我没有使用phpMyAdmin函数来添加约束(我一直在那里得到错误消息),而是遵循marekful的指导,使用SQL ALTER TABLE查询(具有新的约束名称),如下所示:


我仍然不理解原始错误的原因,但我可以看到新添加的外键约束工作得很好。

您可以共享完整的ddl吗?请显示所有3个相关表的create table语句。这些create语句在上运行良好。尝试使用不同的约束名称(change
z-prof-dist_ibfk_1
)不久前我遇到了一个非常类似的问题…您可以共享完整的ddl吗?请为所有3个涉及的表显示create table语句。这些create语句在上运行良好。尝试使用不同的约束名称(change
z-prof-dist_ibfk_1
)不久前我遇到了一个非常类似的问题…您可以共享完整的ddl吗?请为所有3个涉及的表显示create table语句。这些create语句在上运行良好。尝试使用不同的约束名称(change
z-prof-dist_ibfk_1
)我不久前也有类似的情况。。。
ALTER TABLE `z-prof-dist` 
ADD CONSTRAINT `test1` 
  FOREIGN KEY (`profID`) REFERENCES `Profiles` (`profID`) 
ON UPDATE CASCADE