mysql列值不區分大小寫的問題

2021-09-07 10:41:27 字數 1944 閱讀 9674

在將分組聚合結果(就是用了group by col,col2…)儲存到mysql時,列是乙個聯合唯一索引,多個列的組合不重複,發現下面這兩個語句會報錯:

1duplicate entry '2019-01-04-tx'

forkey

'primary'

很顯然,這是主鍵或者唯一索引衝突導致的。

因為我執行了這樣兩條sql:

insert

into tablename(

date

,workflow,cou)

values

('2019-01-04'

,'tx'

,10000);

insert

into tablename(

date

,workflow,cou)

values

('2019-01-04'

,'tx'

,100000

);

mysql會將這date,workflow兩列的值組合,作為索引,索引的初衷當然是為了提高高併發查詢效率,但是在這裡

2019-01-04-tx

2019-01-04-tx

被當作一樣的聯合值了,所以報錯,索引衝突。

解決方法是:

修改列指定binary

將workflow修改為區分大小寫,這裡是workflow取值tx,tx造成的衝突。顯然,要用到alter語法:

alter

table statistic_daily_workflow_count modify

column workflow varchar

(170

)binary

character

set utf8 collate utf8_bin;

這樣就能愉快的玩耍了。

所以,需要注意的是

例項:

-- 建立混合型別 

create

table plaintext(

content nvarchar(50)

,primary

key(content));

insert

into plaintext values

('a');

insert

into plaintext values

('a'

);

丟擲異常:duplicate entry 『a』 for key 『primary』,主鍵不能重複

解決方法1:建立表時字段指定binary

create

table plaintext(

content nvarchar(50)

binary

,primary

key(content)

);

解決方法2:修改列指定binary

-- 修改列

alter

table

`md5data`

.`plaintext`

change column

`content`

`content`

varchar(55

)character

set'utf8'

binary

notnull

default

'';

第一種:讓mysql查詢時區分大小寫

select

*from usertable where

binary id =

'a';

第二種:在建表時加以標識

create

table table_name

Django MySQL查詢不區分大小寫問題

最近發現乙個現象是測試環境的 sqlite 是可以區分大小寫的。就是說python sqlite 環境 company.objects.filter name teambition company.objects.filter name teambition 而到了線上的 mysql 就不區分大小寫...

mysql 不區分大小寫問題

1.mysql 的預設規定 1.1 mysql在linux下資料庫名 表名 列名 別名大小寫規則是這樣的 1 資料庫名與表名是嚴格區分大小寫的 2 表的別名是嚴格區分大小寫的 3 列名與列的別名在所有的情況下均是忽略大小寫的 4 變數名也是嚴格區分大小寫的 1.2 mysql在windows下都不區...

mysql查詢不區分大小寫

摘自 當我們輸入不管大小寫都能查詢到資料,例如 輸入 aaa 或者aaa aaa都能查詢同樣的結果,說明查詢條件對大小寫不敏感。解決方案一 於是懷疑mysql的問題。做個實驗 直接使用客戶端用sql查詢資料庫。發現的確是大小不敏感 通過查詢資料發現需要設定collate 校對 collate規則 b...