mysql怎么转换成utf8字符集
发布网友
发布时间:2024-02-06 13:56
我来回答
共1个回答
热心网友
时间:2024-08-03 23:33
整理 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. 修改新数据库端口,启动应用进行测试
关闭旧数据库,修改新数据库端口重启,启动应用
如何设置MySQL字符集为UTF-8?
打开服务器配置文件(如my.cnf或my.ini),找到[mysqld]部分。在[mysqld]部分中添加以下行:character-set-server=字符集名称 其中,字符集名称是您选择的字符集的名称。例如,如果您想使用UTF-8字符集,可以添加以下行:character-set-server=utf8 对于数据库级字符集,可以在创建数据库时指定字符集。
MySQL如何设置UTF8编码mysql中utf8
第一步:在my.cnf文件中设置字符集 在Linux上安装MySQL后,我们需要修改my.cnf文件来启用UTF8编码方式。该文件可以在/etc/mysql/目录下找到。我们需要在文件末尾添加以下内容:[client]default_character_set=utf8 [mysql]default_character_set=utf8 [mysqld]collation-server = utf8_unicode_ci init-...
mysql怎么转换成utf8字符集
迁移方案一1. 准备新的数据库实例,修改以下参数:[mysqld]## Character Settingsinit_connect='SET NAMES utf8mb4'#连接建立时执行设置的语句,对super权限用户无效character-set-server = utf8mb4collation-server = utf8mb4_general_ci#设置服务端校验规则,如果字符串需要区分大小写,设置为utf8mb...
怎样更改MySQL数据库编码为UTF-8或者GB2312,应该怎么做?
1、关闭mysql服务(以下为命令行中执行)view plaincopy service mysql stop 2、修改 /etc/mysql/my.cnf (默认的安装路径)view plaincopy vim /etc/mysql/my.cnf 打开my.cnf后,在文件内的[mysqld]下增加如下两行设置:character_set_server=utf8 init_connect='SET NAMES utf8'然后保存退出。3...
解决MySQL输入中文问题的方法简介mysql不能输中文
方法一:修改MySQL默认字符集 在MySQL中,支持多种字符集,其中,UTF-8字符集是最为常用的。如果想要支持中文字符输入,可以修改MySQL的默认字符集为UTF-8。具体步骤如下:1.打开MySQL的配置文件my.cnf;2.找到[mysqld]部分,在该部分下添加以下代码:character_set_server=utf8 collation-server=utf8_...
MySQL无法存储中文字符mysql不能存储汉字
1. 设置MySQL字符集 在MySQL中,可以通过修改配置文件my.cnf来设置字符集。打开my.cnf文件,在[mysqld]的节(camp)下添加以下两项配置:[mysqld]character_set_server=utf8 collation-server=utf8_general_ci 这将把MySQL的字符集设置为utf8,并将排序规则设置为utf8_general_ci。保存文件并重新启动...
MySQL中的1366错误问题解决方法mysql中1366
1)修改MySQL默认编码 将MySQL的默认编码改为“UTF-8”,方法如下:a. 编辑MySQL的配置文件my.cnf,找到[mysqld]行。b. 在该行下添加一个新行: charset=utf8 c. 保存并重启MySQL服务。2)修改表格的编码方式 如果无法更改默认编码,可以尝试修改每个需要对非ASCII字符集进行支持的表格的编码方式,...
请问在Mysql中如何把latin1字符集的数据库改为UTF8字符集
1、 最简单的修改方法,就是修改mysql的my.ini文件中的字符集键值,如 default-character-set = utf8 character_set_server = utf8 修改完后,重启mysql的服务,service mysql restart 使用 mysql> SHOW VARIABLES LIKE 'character%';查看,发现数据库编码均已改成utf8 +---+---+ | Variable_nam...
MySQL数据库不支持中文存储如何处理mysql不能存汉字
1. 使用 UTF8MB4 编码 UTF8MB4 是一种针对 MySQL 的 Unicode 字符集编码,可以支持存储中文字符。如果您的 MySQL 数据库的表和列使用了 UTF8 编码,那么您可以考虑将它们转换成 UTF8MB4。以下命令可以将 MySQL 数据库所有表和列的编码转换为 UTF8MB4:ALTER DATABASE database_name CHARACTER ...
如何修改mysql的默认字符集为utf8字符集
在你的mysql安装目录的根目录下,有一个my.ini,找到default-character-set=xxx,注意,一共有两处,把字符集改为utf8