-- 1. 修改数据库编码
ALTER DATABASE /* database name */ CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
-- 2. 生成修改表编码的语句
SELECT
CONCAT(
'ALTER TABLE ',
TABLE_NAME,
' CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ') AS alter_sql
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA='/* database name */'
AND TABLE_TYPE='BASE TABLE'
ORDER BY TABLE_NAME;
-- 3. 生成修改所有表的所有 varchar 类型字段编码的语句
-- 注意:需要手动去除视图的修改语句
SELECT
CONCAT(
'ALTER TABLE ', TABLE_NAME, ' CHANGE ',
'`', COLUMN_NAME, '` ',
'`', COLUMN_NAME, '` ',
COLUMN_TYPE,
' CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;') AS alter_sql
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA='/* database name */'
AND DATA_TYPE='varchar'
ORDER BY TABLE_NAME, COLUMN_NAME;
生成语句如下,直接复制执行即可