苍穹如何修改mysql数据库字符集相关
一 背景
苍穹mysql数据库标准字符集是utf8mb4_unicode_ci。人为默认配置了字符集utf8mb4_general_ci,导致数据库里面部分是utf8mb4_general_ci部分是utf8mb4_unicode_ci。苍穹系统报错如下。
二 mysql数据库修改utf8mb4_general_ci字符集为标准字符集utf8mb4_unicode_ci
停苍穹应用并关闭nginx
systemctl stop nginx
修改参数文件my.cnf字符集相关参数(主从节点都要改)
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
skip-character-set-client-handshake
#忽略应用连接自己设置的字符编码,保持与全局设置一致
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
mysql数据库集群重启
停从库
systemctl stop mysql
重启主库
systemctl restart mysql
启从库
systemctl start mysql
主从同步检查
show slave status\G
主库连接数检查
show processlist
数据库整库备份
mysql数据库Xtrabackup工具整库备份参考链接如下
https://vip.kingdee.com/article/336825129714150912
查看所有数据库的字符集和排序集
select SCHEMA_NAME,DEFAULT_CHARACTER_SET_NAME,DEFAULT_COLLATION_NAME,SQL_PATH
from information_schema.SCHEMATA
备份要修改字符集的单库
mysqldump --no-defaults -ucosmic -p -h127.0.0.1 --single-transaction --routines --set-gtid-purged=off --databases dbname > /backup路径/dbname.sql
修改对应单库的字符集
ALTER DATABASE `dbname` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
查看表的排序规则(通过排序规则可以看出字符集)
select table_schema,table_name,engine,table_collation
from information_schema.tables
where table_schema in ('','','') and table_collation <> 'utf8mb4_unicode_ci'
order by table_schema
修改表及字段字符集
修改表字符集
alter table 'tb_name' default character set utf8mb4
修改某字段字符集
alter table 'tb_name' modify col_name varchar(xxx) character set utf8mb4
同时修改表及字段字符集
alter table 'tb_name' CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
如果某个库里面表比较多可以拼接出要执行的批量修改语句进行修改
SELECT
CONCAT( 'ALTER TABLE ', TABLE_NAME, ' CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;' )
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA = ' ' and TABLE_NAME like '% %'
启动nginx后启动苍穹应用进行验证
systemctl start nginx
注意:应用验证异常用备份进行回退
苍穹如何修改mysql数据库字符集相关
本文2024-09-23 01:13:24发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-144563.html