在將分組聚合結果(就是用了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...