问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何mysql 5.7的编码设置成utf8mb4

发布网友 发布时间:2022-04-21 17:39

我来回答

2个回答

热心网友 时间:2022-04-07 17:55

整理 MySQL 8.0 文档时发现一个变更:
默认字符集由 latin1 变为 utf8mb4。想起以前整理过字符集转换文档,升级到 MySQL 8.0 后大概率会有字符集转换的需求,在此正好分享一下。
当时的需求背景是:
部分系统使用的字符集是 utf8,但 utf8 最多只能存 3 字节长度的字符,不能存放 4 字节的生僻字或者表情符号,因此打算迁移到 utf8mb4。
迁移方案一1. 准备新的数据库实例,修改以下参数:[mysqld]## Character Settingsinit_connect='SET NAMES utf8mb4'#连接建立时执行设置的语句,对super权限用户无效character-set-server = utf8mb4collation-server = utf8mb4_general_ci#设置服务端校验规则,如果字符串需要区分大小写,设置为utf8mb4_binskip-character-set-client-handshake#忽略应用连接自己设置的字符编码,保持与全局设置一致## Innodb Settingsinnodb_file_format = Barracudainnodb_file_format_max = Barracudainnodb_file_per_table = 1innodb_large_prefix = ON#允许索引的最大字节数为3072(不开启则最大为767字节,对于类似varchar(255)字段的索引会有问题,因为255*4大于767)

2. 停止应用,观察,确认不再有数据写入
可通过 show master status 观察 GTID 或者 binlog position,没有变化则没有写入。
3. 导出数据
先导出表结构:mysqlmp -u -p --no-data --default-character-set=utf8mb4 --single-transaction --set-gtid-purged=OFF --databases testdb > /backup/testdb.sql
后导出数据:mysqlmp -u -p --no-create-info --master-data=2 --flush-logs --routines --events --triggers --default-character-set=utf8mb4 --single-transaction --set-gtid-purged=OFF --database testdb > /backup/testdata.sql

4. 修改建表语句
修改导出的表结构文件,将表、列定义中的 utf8 改为 utf8mb4
5. 导入数据
先导入表结构:mysql -u -p testdb < /backup/testdb.sql
后导入数据:mysql -u -p testdb < /backup/testdata.sql

6. 建用户
查出旧环境的数据库用户,在新数据库中创建
7. 修改新数据库端口,启动应用进行测试
关闭旧数据库,修改新数据库端口重启,启动应用

热心网友 时间:2022-04-07 19:13

你好
1、首先是安装mysql数据库,win的直接上网搜一下教程。
2、如果是linux的,就输入以下的命令:
sudo apt-get install mysql-server
sudo apt-get install mysql-client
sudo apt-get install libmysqlclient-dev
还需要设置用户名和密码,这里就不多介绍了,以下显示均在win下,笔者用的是集成环境

3、接着敲入SHOW
VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name
LIKE 'collation%';这段代码,可以直接复制粘贴,会得到如下图(utf8mb4必须msql5.5以上版本才能修改)

我这里的mysql配置文件是my.ini,也许有人的是mysqld.cnf,找到配置文件,在里面添加如下语句:
[client]
default-character-set = utf8mb4
[mysql]default-character-set = utf8mb4
[mysqld]character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
由于我本地有 [mysqld]和[client]就在下方直接填写,没有的朋友需要自己手动创建

4、接着重启MYSQL数据库
5、再次进入数据库以后,输入SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';这时你就会发现的你字符集已经改变了
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
统计学p值 华为mate30pro和mate30epro的区别在哪 华为mate30pro和mate30epro有什 ... ...现在要注销,账上有未分配利润,税局让交个税,否则不给 独立核算分公司注销时,账上有未分配利润,当地税局要交个人所得税,否则... 论文引言写作指导 引言写作要点 请问一下谢岗东莞银行2019年是否取消纸质同贷书,现在只有电子版的,而且... 身份证怎么隐藏中间的数字部分啊。 安阳县第二高级中学的校区环境 安阳县第二高级中学的学校简介 关于德国“俾斯麦号“王牌战列舰的建造资料和输出吗? 提示权限不足,如何解决? 俾斯麦号战列舰的参数 如何安装mysql数据库5.7 俾斯麦号战列舰的介绍 MySQL server 5.7.20和5.7.13有什么区别 “俾斯麦”级战列舰在哪个国家服役? 俾斯麦号战列舰是怎样建造的? 俾斯麦级战列舰的战舰概貌 俾斯麦号战列舰 “俾斯麦”号战列舰是怎样被击沉的? 德国俾斯麦号战列舰有多厉害 为什么说俾斯麦是二战战列舰的巅峰之作呢? 二战期间俾斯麦级战列舰的致命缺陷是什么? 俾斯麦号战绩和沉没经过 “俾斯麦”号战列舰是怎样被击沉的 俾斯麦战列舰介绍 俾斯麦号战列舰有哪些作战经历? 德国&quot;俾斯麦&quot;级战列舰的详细基本数据 学习前后端可以做什么? 有人说库里是体系球员,你赞同这种说法吗? mysql5.7最新版怎么安装 民主具有那些价值 被说为是适配各种体系球员的库里,打球到底有多厉害? 雨林木风win10家庭版安装MySQL server 5.7.19失败... 人民民主具有的三个性质 斯蒂芬库里大家很熟悉,他到底是不是体系球员呢? 怎样理解民主具有鲜明的阶级性? MySQL Server5.7.17安装版如何在win10安装,为何安... 民主具有哪些价值 史蒂芬库里个人能力强大,为何总被人说是体系球员呢? win10家庭版安装MySQL server 5.7.19失败该怎么办 我国民主的特点 外形和肉很像芒果的水果是什么? mysql5.7安装出错,停在了starting server 味道像芒果,但比芒果小很多,枇杷那么大,黄色,... mysql安装完成后C:\ProgramData\MySQL\MySQL Serve... 库里是划时代的巨星,他是如何改变联盟的打法的? mysql5.7.17怎么启动服务 类似于芒果的水果是什么?