0
点赞
收藏
分享

微信扫一扫

MySQL更改编码和排序规则的生成脚本


-- 更改数据库的编码及排序规则
-- ALTER DATABASE testdb CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci
select
CONCAT('ALTER DATABASE ',SCHEMA_NAME ,' CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;') as sql_text
,SCHEMA_NAME
,DEFAULT_CHARACTER_SET_NAME
,DEFAULT_COLLATION_NAME
,DEFAULT_ENCRYPTION
from information_schema.`SCHEMATA`
where
-- SCHEMA_NAME = 'test' and
-- DEFAULT_CHARACTER_SET_NAME !='utf8mb4' and DEFAULT_COLLATION_NAME !='utf8_general_ci' and
SCHEMA_NAME not in ('sys','information_schema','performance_schema','mysql')
;


-- 更改表的编码及排序规则
-- ALTER TABLE testtable CONVERT TO CHARACTER SET utf8mb4 collate utf8mb4_general_ci;
select
CONCAT('ALTER TABLE ',table_schema,'.',table_name ,' CONVERT TO CHARACTER SET utf8mb4 collate utf8mb4_general_ci;') as sql_text
,table_schema
,table_name
,TABLE_COLLATION
from information_schema.`TABLES`
where
-- SCHEMA_NAME = 'test' and
-- DEFAULT_CHARACTER_SET_NAME !='utf8mb4' and DEFAULT_COLLATION_NAME !='utf8_general_ci' and
table_schema not in ('sys','information_schema','performance_schema','mysql')
;


-- 更改列的编码及排序规则
-- ALTER TABLE testtable MODIFY `colname` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
select
CONCAT('ALTER TABLE ',table_schema ,'.', table_name ,' MODIFY ' , `COLUMN_NAME` ,' ',`COLUMN_TYPE` ,' CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;') as sql_text
,table_schema
,table_name
,COLUMN_NAME
,DATA_TYPE
,COLUMN_TYPE
,CHARACTER_SET_NAME
,COLLATION_NAME
from information_schema.`COLUMNS`
where
-- table_schema = 'test' and
COLLATION_NAME is not null and -- 判断排序规则不为空 的都修改 达到统一 , 因为为空的都是不需要排序规则的数据类型
table_schema not in ('sys','information_schema','performance_schema','mysql')
;


举报

相关推荐

0 条评论