mysql8的collate问题和修改
环境
os:centos 7.6
数据库:8.0.22 64bit
问题:
字段a,b它们的collate不一样,结果关联的时候,发现错误。
查询了以下,发现挺多的,逐个修改听麻烦的,于是整理了如下sql:
-- -- 生成需要修改的 内容 -- 暂时用于 varchar类型字段,其它没有试验过 -- 也可以用用于检查 SELECT CONCAT( 'alter table ', table_schema, '.', table_name, ' modify ', column_name, ' ', column_type, CASE WHEN is_nullable = 'YES' THEN ' null ' ELSE ' not null ' END, ' COLLATE utf8mb4_0900_ai_ci ', ' comment ''', column_comment, ''';' ) AS cc FROM information_schema.`COLUMNS` a WHERE table_schema IN ( 'rap_goldhill', 'rap_goldhill_coll' ) AND collation_name != 'utf8mb4_0900_ai_ci' ORDER BY table_name ;
几秒Ok!
collcate 做啥用,请参考 https://www.cnblogs.com/qcloud1001/p/10033364.html
根据原文的意思:collate的作用是用于确定排序规则
utf8mb4_0900_ai_ci 含义:
utf9mb4:表示适用于字符集 utf8mb4
0900:指代unicode比较算法的编号( Unicode Collation Algorithm version)
ai:表示accent insensitive(发音无关),例如e, è, é, ê 和 ë是一视同仁的
ci:这是Case Insensitive的缩写,即大小写无关,也就是说"A"和"a"在排序和比较的时候是一视同仁的
utf8mb4_0900_ai_ci的整个含义就是说:适用于utf8mb4的部分音调、大小写,编号为0900的排序算法
因为部分音调和大小写,所以比较速度比较快,但可能不能满足特定业务要求,特定的表应该根据业务需要来设定。
mysql这种设计提供了一定的灵活性,但不同的字段都提供了设置,其实不是太有必要!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
2020-06-22 ADO.NET调用存储过程
2020-06-22 C#中数组、ArrayList和List三者的区别
2020-06-22 You-Dont-Need-JQuery (你不需要JQuery)
2020-06-22 JavaScript对象之document对象
2020-06-22 JSON对象与JavaScript对象的区别
2020-06-22 sqlserver 批量更新