0
点赞
收藏
分享

微信扫一扫

MySQL批量修正排序规则

mafa1993 2024-05-27 阅读 6

SET FOREIGN_KEY_CHECKS=0;

DROP PROCEDURE IF EXISTS `admin_check_character`;

DELIMITER ;;

CREATE PROCEDURE `admin_check_character`(in_DataBaseName varchar(20),in_character varchar(20),in_collation varchar(20))

   COMMENT '校正字段排序规则同数据库排序规则一致'

BEGIN

 

declare cur_sql varchar(500);

declare done int default false;

declare cur cursor for

               select

               concat('ALTER TABLE `',a.table_name,'` CONVERT TO CHARACTER SET ',in_character,' COLLATE ',in_collation,';')

               from information_schema.tables a

               left join information_schema.columns b on b.table_schema=a.table_schema and b.table_name=a.table_name

               where a.table_schema=in_DataBaseName and a.table_type in ('BASE TABLE','BASE TaBLE') and (b.CHARACTER_SET_NAME<>in_character and b.collation_name<>in_collation)

               group by a.table_name;

declare continue handler for NOT FOUND set done=TRUE;

open cur;

  out_loop: loop

   fetch cur into cur_sql;

                       if done then

                               leave out_loop;

                       end if;

                       set @strsql=cur_sql;

                       prepare stmt from @strsql;            

                       execute stmt;

                 SET done=false;

 end loop out_loop;

close cur;

END

;;

DELIMITER ;

 

/*四:检查数据库的字符集和排序规则*/

/*注:tdxdb 即为要修改的库,utf8和utf8_general_ci即为要修改的排序规则,保持跟库一致*/

call admin_check_character('test1','utf8','utf8_general_ci');

 

drop PROCEDURE admin_check_character;

 

 

 

举报

相关推荐

0 条评论