【数据库】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'
相关推荐
Coder_Boy_7 分钟前
基于SpringAI的在线考试系统-核心模块的数据模型交互关系
java·数据库·人工智能·spring boot·交互
better_liang12 分钟前
Java技术栈中的MySQL数据结构应用与优化
java·数据结构·mysql·性能调优·索引优化
短剑重铸之日20 分钟前
7天读懂MySQL|特别篇:MVCC详解
数据库·后端·mysql·mvcc
计算机毕设指导628 分钟前
基于微信小程序技术校园拼车系统【源码文末联系】
java·spring boot·mysql·微信小程序·小程序·tomcat·maven
北邮刘老师40 分钟前
从SEO到ADO:智能体时代的流量密码
服务器·网络·数据库·人工智能·大模型·智能体·智能体互联网
javachen__43 分钟前
mysql系统级文件损坏修复
数据库·mysql
云和数据.ChenGuang43 分钟前
达梦数据库部署安装故障一
数据库·oracle·达梦·信创·达梦数据库
倔强的石头1061 小时前
场景化落地指南——金仓时序数据库在关键行业的应用实践
数据库·时序数据库·kingbase
xj7573065331 小时前
《精通Django》 第7章 高级视图和URL配置
数据库·django·sqlite
海棠AI实验室1 小时前
第2篇:本地目录与资产标准(把“素材—文案—对话—上架”变成可追溯的生产线)
数据库·资产