這篇文章主要介紹了gorm操作mysql資料庫的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑑價值,需要的朋友可以參考下。
在使用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關鍵字
1 select * from user where binary username = 'admin' and binary password = 'admin';
2、將引數以binary('')包圍
1 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、修改表結構
1 alter table tablename modify column columnname varchar(50) binary character set utf8 collate utf8_bin default null;
2、修改字段(使用gorm設定表中字段區分大小寫)
1 `gorm:"unique" sql:"type:varchar(255) character set utf8 collate utf8_bin"`
gorm 連線mysql 連線到資料庫
連線到資料庫 gorm 官方支援的資料庫型別有 mysql,postgresql,sqlite,sql server mysql go import gorm.io driver mysql gorm.io gorm func main 注意 想要支援完整的 utf 8 編碼,您需要將 charse...
資料庫 MySQL 資料庫的操作
1.建立資料庫 create database if notexists 資料庫名 charset 字元編碼 utf8mb4 如果多次建立會報錯 字元編碼不指定預設 utf8mb4 給資料庫命名 定要習慣性加上反引號,防 和關鍵 字衝突 2.檢視資料庫 show databases 3.選擇資料庫 ...
go使用gorm訪問資料庫
drivertype 資料庫驅動 type drivertype int const mysql drivertype iota 0 mssql 1 oracle 2 sqllite 3 postgresql 4 func d drivertype string string dbconfig 資料...