mysql版本: 8.0.25
情况: mac
工具: DBeaver
需求:项目的字段字符集不一致导致项目sql报错 统一修改为:utf8mb4_general_ci
解决思路:网上找了其他的解决方案发现都不太适合新手,故而记录一下
关于修改全部表的字符集
-- 修改全部表结构字符集语句
- SELECT TABLE_SCHEMA '数据库',TABLE_NAME '表',TABLE_COLLATION '原排序规则',CONCAT('ALTER TABLE ',TABLE_SCHEMA,'.', TABLE_NAME, ' COLLATE=utf8mb4_general_ci;') '修正SQL' FROM information_schema.tables WHERE TABLE_COLLATION IS NOT NULL
复制代码 实行效果:
注意:
CONCAT('ALTER TABLE ',TABLE_SCHEMA,'.', TABLE_NAME, ' COLLATE=utf8mb4_general_ci;') '修正SQL'
利用CONCAT函数 拼接的修正sql,指定要修改的字符集COLLATE=utf8mb4_general_ci;
得到修正的sql,复制下来,实行即可
关于修改全部表中字段的字符集
-- 修改全部表中字段字符集语句
- SELECT TABLE_SCHEMA '数据库',TABLE_NAME '表',COLUMN_NAME '字段',CHARACTER_SET_NAME '原字符集',COLLATION_NAME '原排序规则' ,CONCAT('ALTER TABLE ', TABLE_SCHEMA,'.',TABLE_NAME, ' MODIFY COLUMN ',COLUMN_NAME,' ',COLUMN_TYPE,' CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;') '修正SQL'FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='qianyu_test' AND CHARACTER_SET_NAME IS NOT NULL
复制代码 实行效果:注意:
这里指定了数据名称,需要自行修改
TABLE_SCHEMA='qianyu_test' 此中的qianyu_test需要修改为自己的数据库
如 TABLE_SCHEMA='adminDB'
利用CONCAT函数 拼接的修正sql,指定要修改的字符集COLLATE=utf8mb4_general_ci;
得到修正的sql,复制下来,实行即可
补充:
information_schema.schemata 数据库的元数据信息
information_schema.tables 数据表的元数据信息
information_schema.COLUMNS 表字段的元数据信息
SELECT * FROM information_schema.schemata
SELECT * FROM information_schema.tables
SELECT * FROM information_schema.COLUMNS
使用mysql中的元数据 根据自己的需求可以实现很多的统一修改批量操作
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |