mysql 设置 utf8mb4 怎么查询

如题所述

整理 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. 导出数据
先导出表结构:mysqldump -u -p --no-data --default-character-set=utf8mb4 --single-transaction --set-gtid-purged=OFF --databases testdb > /backup/testdb.sql
后导出数据:mysqldump -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. 修改新数据库端口,启动应用进行测试
关闭旧数据库,修改新数据库端口重启,启动应用
温馨提示:内容为网友见解,仅供参考
第1个回答  2017-01-13
您好,很高兴为您解答。

utf8编码可以支持一到4字节的字符编码,在mysql用我们一般使用utf8编码来处理字符类型,通常情况下都没有问题,但遇到4字节编码的字符,在数据存取的时候就会有问题了。
通常我们可能会得到一个错误或者警告:Incorrect string value: '/xF0/x9D/x8C/x86' for column ...
Mysql 从5.5.3版本开始支持4字节的utf8编码,如果你的Mysql数据库是5.5.3+,按照以下步骤就能解决这个问题,如果版本低于5.5.3,是不是可以考虑升级数据库版本呢?
1、在修改数据库编码前先对数据库备份(虽然utf8mb4兼容utf8,但有备无患)
2、修改数据库的编码、表的编码、列的编码为utf8mb4
3、在Mysql数据库配置文件(my.ini)中加入如下设置

[client]default-character-set = utf8mb4[mysql]default-character-set = utf8mb4[mysqld]character-set-client-handshake = FALSEcharacter-set-server = utf8mb4collation-server = utf8mb4_unicode_ci本回答被提问者采纳

mysql 设置 utf8mb4 怎么查询
迁移方案一1. 准备新的数据库实例,修改以下参数:[mysqld]## Character Settingsinit_connect='SET NAMES utf8mb4'#连接建立时执行设置的语句,对super权限用户无效character-set-server = utf8mb4collation-server = utf8mb4_general_ci#设置服务端校验规则,如果字符串需要区分大小写,设置为utf8mb...

Mysql大小写敏感如何正确地进行数据查询和操作mysql中区分大小写_百度...
name VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,age INT);二、使用binary函数进行数据查询 在进行数据查询时,可以使用binary函数将查询条件转换为二进制形式,这样可以避免大小写敏感问题。例如,以下查询条件将会导致大小写敏感问题:SELECT * FROM my_table WHERE name=’...

MySQL无法识别中文解决办法请看这里mysql中不能识别中文
1. 查看当前MySQL使用的字符集 通过以下命令可以查看MySQL当前使用的字符集:SHOW VARIABLES LIKE ‘character_set%’;2. 修改MySQL字符集 如果当前MySQL使用的字符集为Latin1,需要将其修改为utf8或utf8mb4。可以通过以下命令进行修改:ALTER DATABASE [databasename] CHARACTER SET utf8;AL...

用CMD命令行修改MySQL数据库编码cmd修改mysql编码
在MySQL安装目录下找到my.ini或my.cnf文件,并用文本编辑器打开。在[mysqld]下添加以下两行:[mysqld]…character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci 按照需要修改character-set-server和collation-server的值,并保存文件。步骤5:启动MySQL服务器 使用以下命令启动My...

从CMD命令行修复MySQL的中文乱码问题cmd修改mysql乱码
方法一:更改MySQL客户端字符集 在MySQL客户端中,使用如下命令可以查看当前字符集:status;如果字符集为utf8或utf8mb4,则说明当前已经使用UTF-8编码。如果不是,可以通过如下命令更改客户端字符集:set names utf8;set names utf8mb4;该命令将MySQL客户端的字符集设置为utf8或utf8mb4,可以解决中文...

怎么查看mysql的数据库编码格式
1、查看数据库编码格式 mysql> show variables like 'character_set_database'2、查看数据表的编码格式 mysql> show create table <表名>;3、创建数据库时指定数据库的字符集 mysql>create database <数据库名> character set utf8;4、创建数据表时指定数据表的编码格式 create table tb_books (...

MySQL:Unknown character set:utf8mb4怎么解决?
迁移方案一1. 准备新的数据库实例,修改以下参数:[mysqld]## Character Settingsinit_connect='SET NAMES utf8mb4'#连接建立时执行设置的语句,对super权限用户无效character-set-server = utf8mb4collation-server = utf8mb4_general_ci#设置服务端校验规则,如果字符串需要区分大小写,设置为utf8mb...

MySQL数据库的数据从utf8转utf8mb4笔记
在进行MySQL数据库数据编码从utf8转为utf8mb4的过程中,福哥遇到了一个关于索引长度的错误:Specified key was too long; max key length is 3072 bytes. 这是因为utf8mb4编码一个字符需要四个字节空间,而utf8编码需要三个字节空间。当福哥将一个1000字符长度的varchar字段从utf8转为utf8mb4时,...

mysql font怎么用?
[client]default-character-set=utf8mb4 [mysql]default-character-set=utf8mb4 2. 重新启动MySQL服务器以使更改生效。3. 在MySQL客户端中,输入以下命令以更改客户端使用的字体:mysql> SET NAMES 'utf8mb4' COLLATE 'utf8mb4_unicode_ci';4. 若要在查询结果中使用不同的字体,可以使用`CONVERT...

...Unknown collation: ‘utf8mb4_0900_ai_ci‘
首先,可以考虑将MySQL升级到与导出版本兼容的版本,但这需要对升级过程有一定了解。然而,如果升级操作复杂,可以采取另一种方法:在导入前,打开SQL文件,将文件中出现的utf8mb4_0900_ai_ci全部替换为utf8_general_ci,以及将utf8mb4替换为utf8。务必确保全部替换,并保存文件。然后关闭MySQL,用...

相似回答