menu jfatty
search self_improvement
目录
MySQL 5.7 及以上版本数据库用存储过程 同时修改某一个数据库中所有表的所有字段的编码格式
jfatty
jfatty 2020年12月18日  ·  阅读 2,552

话不多说上代码


CREATE DEFINER=`root`@`%` PROCEDURE `update_table_name`()
begin
 
	DECLARE cnt VARCHAR(100); -- 声明变量用来记录查询出的表名
	DECLARE i int;  -- 循环条件,同时可以用来标记表第几张表
	set i = 0;
 
-- 循环开始
	while i < 32 do -- 这里是32是因为我的数据库中表的数量是32,想不写死可以通过再定义一个变量,动态赋值   TABLE_SCHEMA = '填你的数据库名称'
		select table_name into @cnt from information_schema.`TABLES` where TABLE_SCHEMA = 'db_temp_lf03' limit i,1;
		select @cnt; -- mysql的打印语句
		-- alter table @cnt convert to character set utf8; -- 这一句报错,必须动态拼接才行
		
		set @sql = concat("alter table ", @cnt, " convert to character set utf8mb4");  -- 拼接,注意语句中的空格
		prepare stmt from @sql;  -- 预处理
			execute stmt;  -- 执行
		deallocate prepare stmt;  -- 释放
 
		set i = i + 1;
	end while;  
-- 循环结束,注意分号
 
end

新建查询 执行

CALL update_table_name() ;

详细说明走下面的博主链接
https://blog.csdn.net/lung108/article/details/78285054

分类: MySQL