生成变更语句
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'