• mysql 字符集排查


    mysql 字符集排查

    库级别

    SELECT
    	* 
    FROM
    	information_schema.schemata 
    WHERE
    	schema_name NOT IN ( 'information_schema', 'performance_schema', 'mysql', 'sys' ) 
    	AND ( default_character_set_name <> 'utf8' OR default_collation_name <> 'utf8_general_ci' );
    

    表级别

    SELECT 
        TABLE_SCHEMA,
        TABLE_NAME,
        TABLE_TYPE,
        TABLE_ROWS,
        TABLE_COLLATION,
        CREATE_OPTIONS
    FROM
        information_schema.TABLES
    WHERE
        TABLE_TYPE = 'BASE TABLE'
            AND TABLE_SCHEMA NOT IN ('information_schema' , 'performance_schema', 'mysql', 'sys')
            AND TABLE_COLLATION <> 'utf8_general_ci';
    

    字段级别

    SELECT 
        TABLE_SCHEMA AS '库名',
        DEFAULT_CHARACTER_SET_NAME AS '库的字符集',
        DEFAULT_COLLATION_NAME AS '库的校对字符集',
        TABLE_NAME AS '表名',
        TABLE_COLLATION AS '表的校对规则',
        COLUMN_NAME AS '字段名',
        CHARACTER_SET_NAME AS '字段的字符集',
        COLLATION_NAME AS '字段的校对规则'
    FROM
        (SELECT 
            C2.TABLE_SCHEMA,
                C2.TABLE_NAME,
                C2.CHARACTER_SET_NAME,
                T2.TABLE_COLLATION,
                C2.COLUMN_NAME,
                C2.COLLATION_NAME,
                S2.DEFAULT_CHARACTER_SET_NAME,
                S2.DEFAULT_COLLATION_NAME,
                CASE
                    WHEN
                        S2.DEFAULT_CHARACTER_SET_NAME = 'utf8'
                            AND S2.DEFAULT_COLLATION_NAME = 'utf8_general_ci'
                            AND (C2.CHARACTER_SET_NAME = 'utf8'
                            OR C2.CHARACTER_SET_NAME IS NULL)
                            AND (C2.COLLATION_NAME = 'utf8_general_ci'
                            OR C2.COLLATION_NAME IS NULL)
                            AND T2.TABLE_COLLATION = 'utf8_general_ci'
                    THEN
                        'true'
                    ELSE 'false'
                END STATUS
        FROM
            information_schema.COLUMNS AS C2
        JOIN (SELECT 
            TABLE_SCHEMA,
                TABLE_NAME,
                TABLE_TYPE,
                TABLE_ROWS,
                TABLE_COLLATION,
                CREATE_OPTIONS
        FROM
            information_schema.TABLES
        WHERE
            TABLE_TYPE = 'BASE TABLE'
                AND TABLE_SCHEMA NOT IN ('information_schema' , 'sys', 'performance_schema', 'mysql')) T2 ON C2.TABLE_NAME = T2.TABLE_NAME
            AND C2.TABLE_SCHEMA = T2.TABLE_SCHEMA
        JOIN (SELECT 
            SCHEMA_NAME,
                DEFAULT_CHARACTER_SET_NAME,
                DEFAULT_COLLATION_NAME
        FROM
            information_schema.SCHEMATA) S2 ON T2.TABLE_SCHEMA = S2.SCHEMA_NAME) charset_status
    WHERE
        STATUS = 'false'
    ORDER BY TABLE_SCHEMA , TABLE_NAME;
    
    • 表默认排序规则。输出未显式列出表默认字符集,但排序规则名称以字符集名称开头。

  • 相关阅读:
    urllib 模块 https://www.cnblogs.com/guishou/articles/7089496.html
    cookies与session的区别
    IPMI的几个问题
    Java 线程池
    fg、bg、jobs、&、nohup、ctrl+z、ctrl+c 命令
    Java-加载数据库驱动,取得数据库连接
    《项目经验》--通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来的Json数据写入数据库表中
    C# Newtonsoft.Json 解析多嵌套json 进行反序列化
    使用Json.NET来序列化所需的数据
    Newtonsoft.Json.dll 反序列化JSON字符串
  • 原文地址:https://www.cnblogs.com/gczheng/p/9953676.html
Copyright © 2020-2023  润新知