【数据库】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'
相关推荐
u010914760几秒前
C#怎么使用TopLevel顶级语句 C#顶级语句怎么写如何省略Main方法简化控制台程序【语法】
jvm·数据库·python
Shorasul10 分钟前
Go语言goroutine调度原理_Go语言GMP调度模型教程【高效】
jvm·数据库·python
Absurd58712 分钟前
Navicat导出JSON数据为空如何解决_过滤条件与权限排查
jvm·数据库·python
最好的期待,未来可期12 分钟前
MySQL语法的高级用法CASE WHEN
数据库·mysql
m0_7164300714 分钟前
SQL如何高效统计分类下的多项指标_善用CASE WHEN与SUM聚合
jvm·数据库·python
m0_5887584815 分钟前
PHP源码运行受主板供电影响吗_供电相数重要性说明【技巧】
jvm·数据库·python
qq_4138474017 分钟前
如何处理MongoDB跨分片事务报错_4.2+分布式事务的限制与两阶段提交延迟
jvm·数据库·python
InfinteJustice18 分钟前
HTML函数在超频CPU上更流畅吗_超频对HTML函数影响【技巧】
jvm·数据库·python
AKA__Zas20 分钟前
初识 事务
java·开发语言·数据库·sql
kongba00721 分钟前
2026年4月19日 kimi记忆备份
java·前端·数据库