创建批处理表后,这是我自动生成的代码。将数据插入此表时
它正在创建一个错误,说“密钥'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;
答案 0 :(得分:1)
嗯,错误信息非常清楚地引用了这个字符串:
UNIQUE KEY `BatchID_UNIQUE` (`BatchID`)
所以你要做的就是放弃这个索引(用...
ALTER TABLE `batch` DROP INDEX `BatchID_UNIQUE`
...命令,或者只是从表的定义中排除这一行(在CREATE TABLE
中)。
所有这一切都假设您确实不需要您的批处理ID是唯一的(换句话说,您的INSERT
语句中没有逻辑错误。但情况似乎是这样的:对{{ 1}}已被定义为唯一(通过PRIMARY KEY)。
答案 1 :(得分:0)
以这种方式试试。删除批处理表,然后运行此sql。正确地回答说,对于一个唯一的密钥你不能有两个相同的vaues。所以我也删除了唯一的关键行。
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;