我每个月自动打开一个表,并且我传递了上个月某些表的行,我执行查询时向我发送了一条消息“Duplicate Entry”我试图理解为什么会发生这种情况如果我重新创建表是全新的,我注意到表中的所有新行都获得了最后一个ID的增量ID,写在我的表中但是nextindex索引加上一个索引是前一个表的事实。
我用表格附上我正在构建的代码,并且对数据结构进行查询,我很乐意在我错的地方获得建议。
我将总结问题:
1)打开新表,但ID是上一个表的ID的增量,如果在创建新表时写入AUTO-INCREMENT 1,则没有意义。
2)针对DATABASE的查询给我一个错误
3)与nextautoindex有关联,我需要重置他吗?
密码:
Mysql查询
insert into gyoman072013 (pnumber,id,MokedCcode,WCODE,ndate,TIMECALL,EventHandling,Endtimecare,User,TIMEARRIAVAL,FREEDATA,sendtime) select gyoman062013.pnumber,gyoman062013.id,gyoman062013.MokedCcode,gyoman062013.WCODE,gyoman062013.ndate,gyoman062013.TIMECALL,gyoman062013.EventHandling,gyoman062013.Endtimecare,gyoman062013.User,gyoman062013.TIMEARRIAVAL,gyoman062013.FREEDATA,gyoman062013.sendtime from gyoman062013 RIGHT JOIN eventcodes ON gyoman062013.WCODE=eventcodes.WCODE AND eventcodes.PRIORITY='1' where EventHandling!='2'
注意:我认为我的查询没有问题(可能),但问题是由我每个月重新创建的表格结构造成的。
表格结构查询:
"CREATE TABLE IF NOT EXISTS gyoman".$datestamp." (
`pnumber` varchar(6) NOT NULL,
`id` int(255) NOT NULL AUTO_INCREMENT,
`MokedCcode` varchar(5) NOT NULL,
`GroupB` varchar(3) NOT NULL,
`WCODE` varchar(7) NOT NULL,
`ndate` date NOT NULL,
`TIMECALL` varchar(8) NOT NULL,
`EventHandling` int(1) NOT NULL,
`Endtimecare` varchar(8) NOT NULL,
`User` varchar(255) NOT NULL,
`TIMEARRIAVAL` varchar(8) NOT NULL,
`FREEDATA` varchar(255) NOT NULL,
`sendtime` time NOT NULL,
PRIMARY KEY (`id`),
KEY `MokedCcode` (`MokedCcode`),
KEY `WCODE` (`WCODE`),
KEY `GroupB` (`GroupB`),
KEY `ndate` (`ndate`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1"
注意:datestamp是临近月份,你可以看到@ my query 谢谢!
答案 0 :(得分:0)
尝试在创建表格后重置AUTO INCREMENT
,如:
ALTER TABLE gyoman072013 AUTO_INCREMENT = 1;