我刚刚发现我的生产服务器上的一个表(包含大约 35K 记录)在具有 AUTO_INCREMENT 的 INT(11) 列中包含 588 个重复条目。该列上缺少 UNIQUE 键,因此这可能是原因。
关于如何为所有重复条目提供唯一 ID,然后将 UNIQUE 键添加到列中的任何想法,这样就不会再发生这种情况?
表架构:
CREATE TABLE `items` (
`item_ID` int(11) unsigned NOT NULL auto_increment,
`u_ID` int(10) NOT NULL default '0',
`user_ID` int(11) NOT NULL default '0',
`p_ID` tinyint(4) NOT NULL default '0',
`url` varchar(255) NOT NULL,
`used` int(10) unsigned NOT NULL,
`sort` tinyint(4) NOT NULL,
`last_checked` int(11) NOT NULL,
`unixtime` int(11) NOT NULL,
`switched` int(11) NOT NULL,
`active` tinyint(1) NOT NULL default '0',
UNIQUE KEY `unique` (`p_ID`,`url`),
KEY `index` (`u_ID`,`item_ID`,`sort`,`active`),
KEY `index2` (`u_ID`,`switched`,`active`),
KEY `item_ID` (`item_ID`),
KEY `p_ID` (`p_ID`),
KEY `u_ID` (`u_ID`)
) ENGINE=MyISAM AUTO_INCREMENT=42755 DEFAULT CHARSET=utf8