修改MySQL数据库的字符集和排序规则
苍穹要求使用的mysql数据库的字符集和排序规则是 utf8mb4和utf8mb4_unicode_ci。很多客户或厂商提供的MySQL服务没有按照这个要求配置。导致苍穹使用过程中报错或排序规则不一致时性能卡慢情况,所以需要统一规范数据库的字符集和排序规则。
修改数据库的字符集和排序规则有两种方法:
一是中断所有业务后,需要修改主配置文件,清空数据库后,重新导入导出,方法比较快。
二是在线修改,耗时会比较久。
以下详细讲一下第二种方法,在线修改数据库字符集和排序规则方法。
-- 参数修改
-- 命令行修改,永久生效需要在参数文件中修改
SET character_set_client = 'utf8mb4'; SET character_set_connection = 'utf8mb4'; SET character_set_database = 'utf8mb4'; SET character_set_results = 'utf8mb4'; SET character_set_server = 'utf8mb4'; SET collation_connection = 'utf8mb4_unicode_ci'; SET collation_database = 'utf8mb4_unicode_ci'; SET collation_server = 'utf8mb4_unicode_ci';
-- 参数文件修改(需要重启数据库生效)
[client] init_connect = 'SET NAMES utf8mb4' character-set-server = utf8mb4 default-character-set = utf8mb4 [mysqld] init_connect = 'SET NAMES utf8mb4' init_connect = 'SET collation_connection = utf8mb4_unicode_ci' character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci
-- 数据库级别(新建表生效,已有表不生效)
select concat('alter database ',schema_name,' charset=utf8mb4 collate=utf8mb4_unicode_ci;') from information_schema.schemata where schema_name not in ('information_schema','mysql','performance_schema','sys','test');
这个sql语句会找出不是utf8mb4_unicode_ci排序规则的库名,并生成出alter语,然后执行alter语句进行修改
-- 已有表排序规则修改
-- 修改过程会锁表,只能读不能写入,请选择业务低谷期,谨慎操作!!!
SELECT CONCAT('ALTER TABLE ', table_schema,'.',table_name, ' CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;') FROM information_schema.TABLES WHERE TABLE_SCHEMA not in ('information_schema','mysql','performance_schema','sys','test') and TABLE_COLLATION != 'utf8mb4_unicode_ci';
这个sql语句会找出不是utf8mb4_unicode_ci排序规则的表名,并生成出alter语句,然后等业务低峰期时执行这些alter修改语句进行修改。
-- 已有表中的字段修改
-- 修改过程会锁表,只能读不能写入,请选择业务低谷期,谨慎操作!!!
SELECT CONCAT('ALTER TABLE ',table_schema,'.', table_name, ' MODIFY ', column_name, ' ', DATA_TYPE, '(', CHARACTER_MAXIMUM_LENGTH, ') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci', (CASE WHEN IS_NULLABLE = 'NO' THEN ' NOT NULL' ELSE '' END),(CASE WHEN COLUMN_DEFAULT is not null THEN concat(' default ''',COLUMN_DEFAULT,'''') ELSE '' END),';') FROM information_schema.COLUMNS WHERE TABLE_SCHEMA not in ('information_schema','mysql','performance_schema','sys','test') AND TABLE_NAME not in ('T_ISCB_BILL_LOG_RELATION','T_ISCB_VALUE_CONV_CACHE') AND DATA_TYPE <> 'longtext' AND (CHARACTER_SET_NAME != 'utf8mb4' OR COLLATION_NAME != 'utf8mb4_unicode_ci');这个sql语句会找出不是utf8mb4_unicode_ci排序规则的字段名,并生成出alter语句,然后等业务低峰期时执行这些alter修改语句进行修改。
修改MySQL数据库的字符集和排序规则
苍穹要求使用的mysql数据库的字符集和排序规则是 utf8mb4和utf8mb4_unicode_ci。很多客户或厂商提供的MySQL服务没有按照这个要求配置。导...
点击下载文档
本文2024-09-23 01:13:45发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-144600.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
- 鼎捷EAI整合規範文件V3.1.07 (集團).pdf
- 鼎捷OpenAPI應用場景說明_基礎資料.pdf
- 鼎捷OpenAPI應用場景說明_財務管理.pdf
- 鼎捷T100 API設計器使用手冊T100 APIDesigner(V1.0).docx
- 鼎新e-GoB2雲端ERP B2 線上課程E6-2應付票據整批郵寄 領取.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程A4使用者建立權限設定.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程C3會計開帳與會計傳票.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程E6-1應付票據.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程A5-1進銷存參數設定(初階篇).pdf
- 鼎新e-GoB2雲端ERP B2 線上課程D2帳款開帳與票據開帳.pdf
热门文章