gorm操作MySql數(shù)據(jù)庫的方法
1、表中字段區(qū)分大小寫的設(shè)置
在使用gorm查詢的時(shí)候,會(huì)出現(xiàn)賬戶名A和a是一樣的情況,是因?yàn)閙ysql默認(rèn)不區(qū)分大小寫造成的
1.問題產(chǎn)生的原因
MySQL在Windows下都不區(qū)分大小寫。
MySQL在Linux下數(shù)據(jù)庫名、表名、列名、別名大小寫規(guī)則是這樣的:
1、數(shù)據(jù)庫名與表名是嚴(yán)格區(qū)分大小寫的;
2、表的別名是嚴(yán)格區(qū)分大小寫的;
3、列名與列的別名在所有的情況下均是忽略大小寫的;
4、變量名也是嚴(yán)格區(qū)分大小寫的;
MySQL在查詢字符串時(shí)是大小寫不敏感的,在編繹MySQL時(shí)一般以ISO-8859字符集作為默認(rèn)的字符集,這個(gè)字符集對(duì)大小寫不敏感,因此在比較過程中中文編碼字符大小寫轉(zhuǎn)換造成了這種現(xiàn)象。
2、mysql中的排序規(guī)則
utf8_bin將字符串中的每一個(gè)字符用二進(jìn)制數(shù)據(jù)存儲(chǔ),區(qū)分大小寫。utf8_genera_ci不區(qū)分大小寫,ci為case insensitive的縮寫,即大小寫不敏感。utf8_general_cs區(qū)分大小寫,cs為case sensitive的縮寫,即大小寫敏感。(注意:在Mysql5.6.10版本中,不支持utf8_genral_cs?。?!
3、解決辦法
1、binary關(guān)鍵字
直接修改sql查詢語句,在要查詢的字段前面加上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');
2、修改Collation屬性
創(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ū)分大小寫)
`gorm:"unique" sql:"type:VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_bin"`
到此這篇關(guān)于gorm操作MySql數(shù)據(jù)庫的方法的文章就介紹到這了,更多相關(guān)gorm操作MySql數(shù)據(jù)庫內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Navicat連接虛擬機(jī)mysql常見錯(cuò)誤問題及解決方法
這篇文章主要介紹了Navicat連接虛擬機(jī)mysql常見錯(cuò)誤問題及解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11
MySQL Binlog 日志監(jiān)聽與 Spring 集成實(shí)戰(zhàn)場景
MySQL 的二進(jìn)制日志(binlog)有三種常見的格式:Statement 模式、Row 模式和Mixed 模式,這篇文章主要介紹了MySQL Binlog 日志監(jiān)聽與 Spring 集成實(shí)戰(zhàn),需要的朋友可以參考下2024-12-12
Linux系統(tǒng)下修改mysql字符集為UTF8步驟
大家好,本篇文章主要分享的是Linux系統(tǒng)下修改mysql字符集為UTF8步驟,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下吧,方便下次瀏覽2021-12-12
MYSQL數(shù)據(jù)庫Innodb?引擎mvcc鎖實(shí)現(xiàn)原理
這篇文章主要介紹了MYSQL數(shù)據(jù)庫Innodb?引擎mvcc鎖實(shí)現(xiàn)原理,但是mvcc?的實(shí)現(xiàn)原理是什么呢?下文我們就來實(shí)例說明來mvcc?的實(shí)現(xiàn)原理,感興趣的小伙伴可以參考一下2022-05-05
MySQL通過binlog恢復(fù)數(shù)據(jù)
通過了解binlog日志的相關(guān)配置,簡單掌握通過binlog對(duì)數(shù)據(jù)庫進(jìn)行數(shù)據(jù)恢復(fù)操作。有此需求的朋友可以參考下2021-05-05
Mysql systemctl start mysqld報(bào)錯(cuò)的問題解決
最近運(yùn)行Mysql發(fā)現(xiàn)報(bào)錯(cuò),本文就來介紹一下Mysql systemctl start mysqld報(bào)錯(cuò)的問題解決,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-06-06

