mysql 的唯一索引要求所有参与的列都不能够为 null 值,如果唯一索引中的任何一个元素含有 null 值,则唯一约束将不起作用。...,null,null); -- ok
insert into tb(a,b,c) values (null,null,null); -- still ok
insert into tb(a,b,c) values...(null,null,null); -- still ok
insert into tb(a,b,c) values (1,null,null); -- ok
insert into tb(a,b,c...DOESN'T
insert into tb(a,b,c) values (1,2,3); -- fails correctly
解决方案
给参与唯一索引的字段设置缺省值,如果是数值可以统一设置为 -...1,如果是字符串可以设置为 ""
官网的描述
https://dev.mysql.com/doc/refman/5.7/en/create-index.html
A UNIQUE index creates