Mysql表字段的排序规则不一致,可能导致查询错误,用此方法排查。
数据库所有表排序规则
1 2 3 4
| SELECT TABLE_SCHEMA '数据库',TABLE_NAME '表',TABLE_COLLATION '原排序规则',CONCAT('ALTER TABLE ',TABLE_NAME, ' CHARACTER SET=utf8mb4, COLLATE=utf8mb4_general_ci;') '修正SQL' FROM information_schema.`TABLES` where TABLE_SCHEMA = '你的数据库名' and TABLE_COLLATION != 'utf8mb4_general_ci';
|
数据库所有表字段排序规则
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| -- 数据库所有表字段排序规则 SELECT TABLE_SCHEMA '数据库', TABLE_NAME '表', COLUMN_NAME '字段', CHARACTER_SET_NAME '原字符集', COLLATION_NAME '原排序规则', CONCAT('ALTER TABLE ',TABLE_NAME,' MODIFY COLUMN ',COLUMN_NAME,' ',COLUMN_TYPE, -- 设置新的编码和排序规则 ' CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci', ( CASE WHEN IS_NULLABLE = 'NO' THEN ' NOT NULL' ELSE '' END ), ( CASE WHEN COLUMN_COMMENT = '' THEN ' ' ELSE concat( ' COMMENT''', COLUMN_COMMENT, '''' ) END ), ';' ) '修正SQL' from information_schema.`COLUMNS` where COLLATION_NAME != 'utf8mb4_general_ci' AND TABLE_SCHEMA = '你的数据库名';
|