起因:修改表字符集由utf8到utf8mb4,提示 duplicate entry '9000180525007 ' for key 'code'。
原因:末尾有乙個特殊空格(no-break space = non-breaking space)。特殊空格對應的unicode碼是\u0026\u0023\u0031\u0036\u0030\u003b。而普通空格對應的unicode碼是\u0020
字符集為utf8和utf8mb4的唯一鍵比較都會去掉右側空格,但utf8不會去掉特殊空格。
過濾特殊空格:
pattern p = compile("\\p");matcher m = p.matcher("9000180525007 ");
system.out.println(m.replaceall(""));
參考:
Mysql 唯一鍵約束
3 唯一鍵約束也是分為兩種 4 刪除唯一鍵約束 乙個表中可以有多個唯一鍵約束 唯一鍵約束意味著,唯一,可以為null 唯一鍵的約束名可以自己指定,也可以預設 建立唯一鍵約束,也會在對應列上建立索引。而且刪除唯一鍵約束的方式是通過刪除對應索引來實現的。create table 資料庫名.表名 欄位名1...
mysql 唯一鍵 MySQL資料庫8(十)唯一鍵
唯一鍵 唯一鍵 unique key,用來保證對應的字段中的資料唯一的。主鍵也可以用保證字段資料唯一性,但是一張表只有乙個主鍵。唯一鍵特點 1 唯一鍵在一張表中可以有多個。2 唯一鍵允許字段資料為null,null可以有多個 null不參與比較 建立唯一鍵 建立唯一鍵和建立主鍵非常類似 1 直接在表...
關於唯一鍵 Unique
sql create table test ranbo id number table created sql alter table test ranbo add constraint test ranbo uk unique id table altered sql insert into te...