今天線上資料庫報錯:插入的一條記錄,違反乙個唯一索引的約束。
索引是: day_name_unique
indexes
columns
index type
primary
idunique
day_name_unique
day, name
unique
頓時感到奇怪,程式中明明已經做了校驗了。
根據這個重複的name查詢了一下資料表,果然發現一條記錄,但name的大小寫不同。。。原來是大小寫敏感問題。
檢視建表語句包含:default charset=utf8;參照 使用的collation是utf8字符集對應的預設值。
執行 show collation 可以檢視各個字符集對應的預設collation。
utf8 預設是 utf8_general_ci。 ci 即 case insensitive。
解決辦法:
修改這個欄位的collation
alter table `tablename` change `name` `name` varchar(255) character set utf8 collateutf8_bin not null
MySQL資料表大小寫
在windows平台下進行安裝好mysql之後,在使用sql語句進行資料庫操作的時候是不區分大小寫的。比如在建表的時候建立了一張表pe student,則查詢pe student表中的資料時,使用如下兩種方式都可以 select from pe student select from pe stud...
Mysql大小寫敏感問題
開發十年,就只剩下這套架構體系了!前幾天專案發布到centos上去,訪問登入介面沒問題,一點登入就有問題,有點懷疑是資料庫連線異常了。今天找到了問題的所在。先描述下找問題的流程 在終端輸入tail f catalina.ou命令能實時看到tomcat的輸出,我這問題就很明顯了,就是找不到對應的表,為...
mysql 表名大小寫敏感問題
已有表 user select from user 可以查出來 select from user 報user不存在 這在一些orm框架裡可能會產生問題,比如預設使用大寫的表名,導致找不到表或者報錯 mysql表名大小寫再linux環境預設為敏感的 show variables like lower ...