Mysql 唯一密钥不工作
我有一个表cars,它由表cars1和cars2的连接数据填充。 架构如下所示:Mysql 唯一密钥不工作,mysql,sql,unique,Mysql,Sql,Unique,我有一个表cars,它由表cars1和cars2的连接数据填充。 架构如下所示: CREATE TABLE `cars` ( `id` int(10) NOT NULL AUTO_INCREMENT, `uniqueid` varchar(10) NOT NULL, `name` varchar(20) NOT NULL UNIQUE KEY `uniqueid` (`uniqueid`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAUL
CREATE TABLE `cars` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`uniqueid` varchar(10) NOT NULL,
`name` varchar(20) NOT NULL
UNIQUE KEY `uniqueid` (`uniqueid`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1
但是,我的表中的uniqueid字段有重复的条目:
ID UNIQUEID NAME
1 1 Mercedes
2 2 Audi
3 2 Chevrolet
数据get通过简单的INSERT IGNORE INTO SELECT from语句从cars1和cars2填充到该表中
这怎么可能呢?是否表的索引已损坏?我通过以下操作发现了重复的行:
SELECT uniqueid, COUNT(uniqueid) FROM cars GROUP BY uniqueid HAVING(COUNT(uniqueid)>1);
如何解决该问题?uniqueid字段的类型是
VARCHAR(10)
,这意味着它可以包含'1'
、'1'
或'1'
,所有这些值看起来相同,但它们不相同
使字段
uniqueid
INT;问题将消失。如果我不能这样做,因为uniqueid字段也包含类似“abcd”的id,该怎么办?我可以建议您更新表格-要修剪字符串:更新汽车集uniqueid=trim(uniqueid)。