MySQL - 3719 ‘utf8‘ is currently an alias for the character set UTF8MB3

这篇博客讨论了MySQL中`utf8`字符集的限制,指出它不支持完整的UTF-8编码。由于`utf8`在将来会被重定向到`utf8mb4`,建议使用`utf8mb4`以确保与所有UTF-8字符兼容。文章通过一个带有警告的MySQL创建表脚本示例,解释了如何避免字符集迁移问题,并提供了修正后的脚本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Warning Description

3719 'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous.

MySQL Script with warning

CREATE TABLE `user` (
  `id` INTEGER NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `role` VARCHAR(50) CHARACTER SET latin1 NOT NULL COMMENT 'Role',
  `active` TINYINT NOT NULL COMMENT 'Active',
  PRIMARY KEY (`id`)
)
ENGINE = InnoDB
DEFAULT CHARSET=utf8
COMMENT = 'User';

原因分析

“utf8”只支持每个字符最多三个字节,而真正的UTF-8是每个字符最多四个字节。

因此,MySQL 的 utf8不是真正的UTF-8,MySQL 的 utf8mb4(2010年发布)是真正的UTF-8。

MySQL Script without warning

CREATE TABLE `user` (
  `id` INTEGER NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `role` VARCHAR(50) CHARACTER SET latin1 NOT NULL COMMENT 'Role',
  `active` TINYINT NOT NULL COMMENT 'Active',
  PRIMARY KEY (`id`)
)
ENGINE = InnoDB
DEFAULT CHARSET=utf8mb4
COMMENT = 'User';

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值