MySQL 5.7 及以上版本数据库用存储过程 同时修改某一个数据库中所有表的所有字段的编码格式
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