修改mysql默认字符集和排序规则

本文介绍如何查看及修改MySQL数据库的字符集设置。包括命令行查看字符集和排序规则的方法,编辑my.ini文件来更改默认字符集的具体步骤,以及重启数据库和服务验证修改效果的过程。

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

命令如下:

mysql> SHOW VARIABLES LIKE 'collation_%';

mysql> SHOW VARIABLES LIKE 'character%';



2.修改my.ini文件,改后内容如下

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
# *** default location during install, and will be replaced if you
# *** upgrade to a newer version of MySQL.


[client]
default-character-set=utf8
 
[mysql]
default-character-set=utf8


[mysqld]


# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M


# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin


# These are commonly set, remove the # and set as required.
# basedir = .....
# datadir = .....
# port = .....
# server_id = .....




# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M 
init_connect='SET collation_connection = utf8_general_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_general_ci
skip-character-set-client-handshake
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 

3.重启数据库

4.查看修改后效果






### MySQL 8 字符集排序规则 #### 默认字符集排序规则MySQL 8.0.1 及更高版本中,默认字符集为 `utf8mb4`,默认排序规则为 `utf8mb4_0900_ai_ci`[^2]。此排序规则属于 `utf8mb4_unicode_ci` 类型之一。 #### 字符集差异 需要注意的是,尽管名称相似,MySQL中的 `utf8` 并不代表标准的 UTF-8 编码格式;实际上,为了更好地支持完整的 Unicode 字符(包括表情符号其他四字节字符),推荐使用 `utf8mb4` 而不是 `utf8`[^3]。 #### 排序规则的选择 对于排序规则而言: - `utf8mb4_unicode_ci` 提供更精确的语言敏感性匹配,适用于多语言环境下的数据处理。 - `utf8mb4_general_ci` 则提供了更快的速度,但在某些情况下可能不如前者准确[^5]。 具体选择取决于应用程序的需求——如果涉及多种欧洲语言或其他需要严格区分大小写的场景,则应优先考虑 `utf8mb4_unicode_ci` 或其变体;而对于大多数简单的应用场景,尤其是只包含基本拉丁字母的情况,可以选择性能更好的 `utf8mb4_general_ci`。 #### 设置方法 可以通过以下 SQL 命令来设置数据库、表或列级别的字符集排序规则: ```sql -- 创建新数据库时指定字符集排序规则 CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- 修改现有数据库的字符集排序规则 ALTER DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- 创建带有特定字符集排序规则的新表 CREATE TABLE mytable ( id INT NOT NULL PRIMARY KEY, name VARCHAR(255) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; ``` #### 兼容性注意事项 当从旧版 MySQL 升级至 8.x 版本时,可能会遇到由于默认排序规则变化带来的兼容性问题。特别是那些依赖于早期版本默认行为的应用程序,在迁移过程中应当仔细测试并调整相应的配置以确保一致性。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值