2

这是我创建批处理表后自动生成的代码。在向该表插入数据时

  1. BatchID=1,Course_CourseID=1
  2. BatchID=1,Course_CourseID=2

它正在创建一个错误,提示“密钥'BatchID_UNIQUE'的重复条目'1'”。我正在使用 C# 2010 express windows 应用程序以及 MySQl 5.1

我的表架构在这里

CREATE TABLE `batch` (
  `BatchID` int(11) NOT NULL,
  `Course_CourseID` int(11) NOT NULL,
  `NoOfStudents` int(11) DEFAULT NULL,
  `ClassRoom` varchar(45) DEFAULT NULL,
  `StartDate` varchar(45) DEFAULT NULL,
  `Day` varchar(45) DEFAULT NULL,
  `Time` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`BatchID`,`Course_CourseID`),
  UNIQUE KEY `BatchID_UNIQUE` (`BatchID`),
  KEY `fk_Batch_Course1` (`Course_CourseID`),
  CONSTRAINT `fk_Batch_Course1` FOREIGN KEY (`Course_CourseID`)
  REFERENCES `course` (`CourseID`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
4

2 回答 2

1

好吧,错误消息很明显是指这个字符串:

UNIQUE KEY `BatchID_UNIQUE` (`BatchID`)

所以你要做的是要么删除这个索引(用......

ALTER TABLE `batch` DROP INDEX `BatchID_UNIQUE`

... 命令,或者只是从表的定义中排除这一行(在 中CREATE TABLE)。

所有这一切都假设您真的不需要您的批次 ID 是唯一的(换句话说,您的INSERT语句中没有逻辑错误。但这似乎是这种情况:pairBatchID-Course_CourseID已被定义为唯一(通过 PRIMARY KEY) .

于 2012-09-09T18:14:00.447 回答
0

试试这个方法。删除您的批处理表,然后运行此 sql。正确的回答是,一个唯一键不能有两个相同的值。所以我也删除了唯一的关键线。

CREATE TABLE IF NOT EXISTS `batch` (
  `BatchID` int(11) NOT NULL,
  `Course_CourseID` int(11) NOT NULL,
  `NoOfStudents` int(11) DEFAULT NULL,
  `ClassRoom` varchar(45) DEFAULT NULL,
  `StartDate` varchar(45) DEFAULT NULL,
  `Day` varchar(45) DEFAULT NULL,
  `Time` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`BatchID`,`Course_CourseID`),
  KEY `Course_CourseID` (`Course_CourseID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

ALTER TABLE `batch` ADD CONSTRAINT `batch_ibfk_2` FOREIGN KEY (`Course_CourseID`)
REFERENCES `course` (`CourseId`) ON DELETE NO ACTION ON UPDATE NO ACTION;
于 2012-09-09T21:10:03.163 回答