편집 : 삽입하려고하는 데이터가 무엇이든 관계없이 모든 삽입물에 아래 오류가 표시되는 것 같습니다. 어쩌면 내 식탁이 부패 했나? 어쨌든, 여기 내 질문 :중복이 없을 때 MySQL에 중복 입력 오류가 발생했습니다.
나는 MySQL의 테이블을
CREATE TABLE `AcpConfig` (
`ndss_id` int(11) NOT NULL default '0',
`acp_id` int(11) NOT NULL default '0',
`run_date` date NOT NULL default '0000-00-00',
`hw_5_threshold` tinyint(1) NOT NULL default '0',
`stp_on` tinyint(1) NOT NULL default '0',
`sort_on` tinyint(1) NOT NULL default '0',
`afcs_ocr_message_format` tinyint(1) NOT NULL default '0',
`use_hw` tinyint(1) NOT NULL default '0',
`test_mode` tinyint(1) NOT NULL default '0',
`afcs_version` varchar(255) NOT NULL default '',
`acp_build` varchar(255) NOT NULL default '',
`id` int(11) NOT NULL auto_increment,
`swstp_in_acp_rack` int(11) NOT NULL default '0',
`acplookup_id` int(11) NOT NULL default '0',
`bfind_cksum` varchar(255) NOT NULL default '',
`tz_cksum` varchar(255) NOT NULL default '',
`fetched` varchar(4) NOT NULL default '"NO"',
PRIMARY KEY (`id`),
UNIQUE KEY `ndss_id` (`ndss_id`,`acp_id`,`run_date`),
KEY `ndss_acp` (`ndss_id`,`acp_id`),
KEY `ndss_acp_rundate` (`ndss_id`,`acp_id`,`run_date`),
KEY `run_date` (`run_date`),
KEY `acplookup_rundate` (`acplookup_id`,`run_date`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
을 그리고 약 50 만 행을 가지고있다. 나는 간단한 INSERT에게
INSERT INTO AcpConfig (ndss_id, acp_id, run_date, hw_5_threshold, stp_on, sort_on, afcs_ocr_message_format, use_hw, test_mode, afcs_version, acp_build, swstp_in_acp_rack, acplookup_id, bfind_cksum, tz_cksum) VALUES ('75', '5', '2009-07-22', '75', '1', '1', '0', '1', '0', '1.5.2', '041709', '2', '269', '0', '1950359846');
을 수행하기 위해 노력하고있어 그것은 나에게 acp_id 및 run_date, ndss_id 나는 세 개의 필드 내 UNIQUE 제약 조건을 위반하고있어 것을 의미 오류
ERROR 1062 (23000): Duplicate entry '502831' for key 1
을 제공합니다. (ID입니다 502831 내 테이블의 행하지 않고 행이 삽입 된 경우 사용되는 다음 ID를 것 같다.) 나는 같은 값을 해당 필드에 대해 선택하면 문제가있다
select * from AcpConfig where ndss_id=75 and acp_id=5 and run_date='2009-07-22';
결과를 반환하지 않습니다. 그래서 저는 실제로 어떤 것도 복제하지 않습니다. 내 다른 키는 모두 인덱스이며 고유 제한 조건이 아닙니다. 또한 CREATE TABLE 문에서 볼 수있는 것과 같이 UNIQUE 제약 조건이 하나 있습니다. 그렇다면 왜 내가 복제본을 가지고 있다고 말하는거야?
REPAIR TABLE에서 일련 번호를 수정 한 것 같습니다. – northpole