使用存储过程批量修改mysql库表字段的字符集和排序规则

本文介绍如何通过存储过程解决mysql库表字符集和排序规则更改后不生效的问题,强调针对已有表的字段进行修改,以确保设置正确生效。
摘要由CSDN通过智能技术生成

mysql库的字符集和排序规则排序后对于已有的表不生效,只对新创建的表生效;

修改表的字符集和排序规则可以对字段生效。所以,只需要找出当前库所有的表,迭代修改表的即可解决问题。库的单独修改。

 

# 1、修改库database_name的字符集为utf8mb4,排序规则为utf8mb4_general_ci
### 连接mysql后,不用选择库,把database_name替换成目标库名字,直接执行这一句脚本。
ALTER DATABASE database_name  CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;


# 2、创建批量修改表字符集和排序规则的存储过程
### 替换database_name为要执行的库,执行以下脚本
### 表的字符集修改utf8mb4,排序规则为utf8mb4_general_ci
use database database_name;

DROP PROCEDURE IF EXISTS UP_CHANGE_UTF8MB4;
DELIMITER $$

CREATE PROCEDURE UP_CHANGE_UTF8MB4()

  COMMENT '将当前数据库中所有表的字符集和排序规则'

BEGIN

  DECLARE $i INT;

  DECLARE $cnt INT;

  DECLARE $NAME VARCHAR(64);



  

  #创建临时表,代替游标

  DROP TABLE IF EXISTS tmp_Table_name;

  CREATE TEMPORARY TABLE tmp_Table_name (

    id INT NOT NULL AUTO_INCREMENT,

    table_name VARCHAR(64) NOT NULL,

    PRIMARY KEY (`id`)

  );


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值