您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關(guān)使用gorm怎么對(duì)MySql數(shù)據(jù)庫(kù)進(jìn)行操作,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話(huà)不多說(shuō),跟著小編一起來(lái)看看吧。
在使用gorm查詢(xún)的時(shí)候,會(huì)出現(xiàn)賬戶(hù)名A和a是一樣的情況,是因?yàn)閙ysql默認(rèn)不區(qū)分大小寫(xiě)造成的
1.問(wèn)題產(chǎn)生的原因
MySQL在Windows下都不區(qū)分大小寫(xiě)。
MySQL在Linux下數(shù)據(jù)庫(kù)名、表名、列名、別名大小寫(xiě)規(guī)則是這樣的:
1、數(shù)據(jù)庫(kù)名與表名是嚴(yán)格區(qū)分大小寫(xiě)的;
2、表的別名是嚴(yán)格區(qū)分大小寫(xiě)的;
3、列名與列的別名在所有的情況下均是忽略大小寫(xiě)的;
4、變量名也是嚴(yán)格區(qū)分大小寫(xiě)的;
MySQL在查詢(xún)字符串時(shí)是大小寫(xiě)不敏感的,在編繹MySQL時(shí)一般以ISO-8859字符集作為默認(rèn)的字符集,這個(gè)字符集對(duì)大小寫(xiě)不敏感,因此在比較過(guò)程中中文編碼字符大小寫(xiě)轉(zhuǎn)換造成了這種現(xiàn)象。
2、mysql中的排序規(guī)則
utf8_bin將字符串中的每一個(gè)字符用二進(jìn)制數(shù)據(jù)存儲(chǔ),區(qū)分大小寫(xiě)。utf8_genera_ci不區(qū)分大小寫(xiě),ci為case insensitive的縮寫(xiě),即大小寫(xiě)不敏感。utf8_general_cs區(qū)分大小寫(xiě),cs為case sensitive的縮寫(xiě),即大小寫(xiě)敏感。(注意:在Mysql5.6.10版本中,不支持utf8_genral_cs?。?!
3、解決辦法
1、binary關(guān)鍵字
直接修改sql查詢(xún)語(yǔ)句,在要查詢(xún)的字段前面加上binary關(guān)鍵字即可。(不推薦)
1、在每一個(gè)條件前加上binary關(guān)鍵字
select * from user where binary username = 'admin' and binary password = 'admin';
2、將參數(shù)以binary('')包圍
select * from user where username like binary('admin') and password like binary('admin');
創(chuàng)建表時(shí),直接設(shè)置表的collate屬性為utf8_general_cs或者utf8_bin;如果已經(jīng)創(chuàng)建表,則直接修改字段的Collation屬性為utf8_general_cs或者utf8_bin。
1、修改表結(jié)構(gòu)
ALTER TABLE TABLENAME MODIFY COLUMN COLUMNNAME VARCHAR(50) BINARY CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL;
2、修改字段(使用gorm設(shè)置表中字段區(qū)分大小寫(xiě))
`gorm:"unique" sql:"type:VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_bin"`
以上就是使用gorm怎么對(duì)MySql數(shù)據(jù)庫(kù)進(jìn)行操作,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。