修改数据库中指定库的数据表字符
字符集(character set):定义了字符以及字符的编码。
字符序(collation):定义了字符的比较规则。
# 常用操作
查看数据库支持的字符集
select * from information_schema.character_sets;
1
查看数据库支持的检验规则
select * from information_schema.collations;
1
查看表字符集及检验规则
select * from information_schema.tables where table_name='表名'
1
查看字段编码
SHOW FULL COLUMNS FROM 表名
1
更改表编码和表中所有字段的编码
ALTER TABLE TABLE_NAME CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
1
查询某个数据库所有表名的语句
SELECT TABLE_NAME from information_schema.`TABLES` WHERE TABLE_SCHEMA = 'DATABASE_NAME';
1
# 修改数据库中所有表和表中字段字符集
SELECT
CONCAT('ALTER TABLE ', TABLE_NAME, ' CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;')
FROM
information_schema.`TABLES`
WHERE
TABLE_SCHEMA = 'DATABASE_NAME';
1
2
3
4
5
6
2
3
4
5
6
以上 SQL 执行后会得到修改字符集的 SQL 语句,全部执行即可修改数据表字符集。
如果执行字符集修改时,出现错误警告,可以关闭严格模式后,重新登录数据库重试 SQL。
set global sql_mode = '';
1
额外事项:
如果数据库设置了主从同步,确保主从同步正常,只需要在主库修改字符集,从库字符集也会同步修改。
上次更新: 2023/09/19, 14:48:57