gorm操作MySql數據庫的方法
1、表中字段區分大小寫的設置
在使用gorm查詢的時候,會出現賬戶名A和a是一樣的情況,是因為mysql默認不區分大小寫造成的
1.問題產生的原因
MySQL在Windows下都不區分大小寫。
MySQL在Linux下數據庫名、表名、列名、別名大小寫規則是這樣的:
1、數據庫名與表名是嚴格區分大小寫的;
2、表的別名是嚴格區分大小寫的;
3、列名與列的別名在所有的情況下均是忽略大小寫的;
4、變量名也是嚴格區分大小寫的;
MySQL在查詢字符串時是大小寫不敏感的,在編繹MySQL時一般以ISO-8859字符集作為默認的字符集,這個字符集對大小寫不敏感,因此在比較過程中中文編碼字符大小寫轉換造成瞭這種現象。
2、mysql中的排序規則
utf8_bin將字符串中的每一個字符用二進制數據存儲,區分大小寫。utf8_genera_ci不區分大小寫,ci為case insensitive的縮寫,即大小寫不敏感。utf8_general_cs區分大小寫,cs為case sensitive的縮寫,即大小寫敏感。(註意:在Mysql5.6.10版本中,不支持utf8_genral_cs!!!
3、解決辦法
1、binary關鍵字
直接修改sql查詢語句,在要查詢的字段前面加上binary關鍵字即可。(不推薦)
1、在每一個條件前加上binary關鍵字
select * from user where binary username = 'admin' and binary password = 'admin';
2、將參數以binary(”)包圍
select * from user where username like binary('admin') and password like binary('admin');
2、修改Collation屬性
創建表時,直接設置表的collate屬性為utf8_general_cs或者utf8_bin;如果已經創建表,則直接修改字段的Collation屬性為utf8_general_cs或者utf8_bin。
1、修改表結構
ALTER TABLE TABLENAME MODIFY COLUMN COLUMNNAME VARCHAR(50) BINARY CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL;
2、修改字段(使用gorm設置表中字段區分大小寫)
`gorm:"unique" sql:"type:VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_bin"`
到此這篇關於gorm操作MySql數據庫的方法的文章就介紹到這瞭,更多相關gorm操作MySql數據庫內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- MySQL校對規則(COLLATION)的具體使用
- 詳細談談MYSQL中的COLLATE是什麼
- MySQL中你可能忽略的COLLATION實例詳解
- 深入探究Mysql模糊查詢是否區分大小寫
- MySQL修改字符集的實戰教程