【数据库】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'
相关推荐
荒川之神18 小时前
Oracle LEVEL 函数练习(HR 模式 employees 表)
数据库·oracle
TDengine (老段)18 小时前
TDengine IDMP 工业数据建模 —— 元素与数据查询
大数据·数据库·人工智能·物联网·时序数据库·tdengine·涛思数据
蜡台18 小时前
Mysql 安装与配置
数据库·mysql
lajidecrd18 小时前
Ubuntu24安装PostgreSQL和PgVector
数据库·postgresql
羊小猪~~18 小时前
Redis学习笔记(数据类型、持久化、事件、管道、发布订阅等)
开发语言·数据库·c++·redis·后端·学习·缓存
福娃筱欢18 小时前
Oracle迁移KES提示ERROR: type “geometry“ does not exist
数据库·oracle
mldlds18 小时前
使用 Qt 插件和 SQLCipher 实现 SQLite 数据库加密与解密
数据库·qt·sqlite
大空大地202618 小时前
Entity Framework
数据库
王仲肖19 小时前
PostgreSQL 事务 ID 年龄增长与冻结机制分析
数据库·postgresql
好家伙VCC19 小时前
**CQRS模式实战:用Go语言构建高并发读写分离架构**在现代分布式系统中,随着业务复杂度的提升和用户量的增长,传统的单数据库模型逐
java·数据库·python·架构·golang