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关键字即可。(不推荐)
mysql数据库的方法
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数据库内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!