Mysql 字符集不一致導(dǎo)致連表異常的解決
做一個簡單的如下的連表查詢,居然直接提示錯誤,居然是字符集不一致的問題,本文記錄一下mysql的字符集類型,以及下面這個問題的解決方案
select a.id, b.id from tt as a, t2 as b where a.xx = b.xx -- Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT) for operation '='
1. 解決方法
先來看上面這個問題的解決方法,最容易想到的就是統(tǒng)一兩張表的字符集,要么都是utf8mb4_general_ci,要么就都是utf8mb4_unicode_ci,統(tǒng)一一下這個問題就自然解決了
如果我不想修改表的字符集呢?畢竟生產(chǎn)環(huán)境下,做這種操作還是有風(fēng)險的,下面是一種不太優(yōu)雅的解決方法
在字段后面指定字符集(可以全部都指定為utf8mb4_general_ci 當(dāng)然也可以全部指定為 utf8mb4_unicode_ci, 根據(jù)實際需要進(jìn)行處理即可)
select a.id, b.id from tt as a, t2 as b where a.xx = b.xx collate utf8mb4_general_ci
2. mysql字符集
字符集
對于國內(nèi)的小伙伴,一般而言我們常見的字符集有下面三種
- gbk: 兩字節(jié)
- utf8: 三個字節(jié)
- utf8mb4: 四個字節(jié)
而mysql實際支持的就比較多了,可以通過show charset;進(jìn)行查詢
校驗規(guī)則
在實際的case中,經(jīng)常會看到下面幾種
- utf8_bin
- utf8mb4_unicode_ci
- utf8mb4_general_ci
- latin1_general_cs
當(dāng)然我們也可以通過 show collation;查看所支持的校驗規(guī)則
請注意上面的寫法
- ci: case insensitive的縮寫 大小寫不敏感
- cs: case sensitive 大小寫敏感
- bin: 二進(jìn)制存儲,大小寫敏感
到此這篇關(guān)于Mysql 字符集不一致導(dǎo)致連表異常的解決的文章就介紹到這了,更多相關(guān)Mysql 字符集連表異常內(nèi)容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。