【数据库】Mysql 批量变更所有字段类型为varchar的字符集

生成变更语句

sql 复制代码
SELECT 
	CONCAT(
		'ALTER TABLE ', TABLE_NAME, 
		' MODIFY ', COLUMN_NAME, 
		' ', COLUMN_TYPE, ' ',
		' CHARACTER SET utf8 COLLATE utf8_general_ci ', 
		CASE 
			WHEN IS_NULLABLE = 'YES' THEN ' NULL DEFAULT NULL '
			WHEN IS_NULLABLE = 'NO' AND ISNULL(COLUMN_DEFAULT) THEN 'NOT NULL '
			ELSE  CONCAT("NOT NULL DEFAULT '",COLUMN_DEFAULT,"'") 
		END,
		"COMMENT '",
		COLUMN_COMMENT,
		"';"
	) AS alter_statement
FROM 
	INFORMATION_SCHEMA.`COLUMNS`
WHERE 
	TABLE_SCHEMA = '你的数据库名称'
AND 
	CHARACTER_SET_NAME = 'gbk' 
AND 
	TABLE_NAME IN (
  		SELECT 
  			TABLE_NAME 
  		FROM 
  			information_schema.`TABLES` 
  		WHERE 
  			TABLE_SCHEMA = '你的数据库名称' 
  		AND 
  			TABLE_TYPE = 'BASE TABLE'
	);

如下图所示,修改语句中的你的数据库名称,放到查询页面,运行后自动生成变更语句!

运行查询结果

将上一步骤生成的变更语句复制到新的查询页面运行,即可完成所有varchar字符集的变更。

注意:一定要在修改字符集数据库下运行,否则可能会报如下错误:

sql 复制代码
Err] 1044 - Access denied for user 'rdis'@'%' to database 'information_schema'
相关推荐
超级种码2 分钟前
Redis:Redis 常见问题及解决思路
数据库·redis·缓存
计算机学姐5 分钟前
基于SpringBoot的社区互助系统
java·spring boot·后端·mysql·spring·信息可视化·推荐算法
xcLeigh10 分钟前
Oracle 迁移 KingbaseES 避坑指南:工具选型、参数配置与性能调优
数据库·oracle·工具·性能·金仓·kingbasees
JY.yuyu11 分钟前
SQL Server数据库
数据库
June bug12 分钟前
【配环境】安装配置Oracle JDK
java·数据库·oracle
独自破碎E14 分钟前
如何在MySQL中监控和优化慢SQL?
数据库·sql·mysql
数据库生产实战15 分钟前
基础知识 | Oracle Index Split(索引分裂:你的数据库越来越慢可能与此有关!建议排查!
数据库·oracle
知识分享小能手16 分钟前
Oracle 19c入门学习教程,从入门到精通,Oracle 控制文件与日志文件管理详解(8)
数据库·学习·oracle
走遍西兰花.jpg17 分钟前
gaussdb的基础命令
数据库·gaussdb
阿杰 AJie20 分钟前
MyBatis-Plus 的内置方法
java·数据库·mybatis