Я только что узнал, что таблица на моем производственном сервере (которая содержит около 35 тысяч записей) содержит 588 повторяющихся записей в столбце INT (11) с AUTO_INCREMENT. Ключ UNIQUE отсутствует в этом столбце, поэтому, вероятно, причина в этом.
Любые идеи о том, как дать всем повторяющимся записям уникальный идентификатор, а затем добавить ключ 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
show create table
. Можешь выложить свою схему? - person Mike Purcell   schedule 13.12.2011DESC tablename
, она плохо выводится в PHPMyAdmin - person Thomas G   schedule 13.12.2011show create table
. Мне любопытно посмотреть, как вы смогли добавить auto_increment к столбцу, не идентифицируя его какPRIMARY KEY (
id)
- person Mike Purcell   schedule 13.12.2011item_id
не использовался в качестве внешнего ключа в других таблицах, вы можете просто удалить столбец и воссоздать его какAUTO_INCREMENT PRIMARY KEY
. - person ypercubeᵀᴹ   schedule 13.12.2011