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';