• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    MySQL编码不一致可能引起的一些问题

    存储过程与编码

    MySQL 存储过程中, 表和数据的编码与数据库和存储过程默认的编码不同则可能出现 sql 不会使用索引的情况, 因为 MySQL 会对条件列的数据做相应的编码转换, 比如以下, 表数据为 latin1, MySQL 解析器会做一些转换:

    ... WHERE namecolumn = NAME_CONST('in_namecolumn',_utf8'MP201022' COLLATE 'utf8_general_ci')
    

    可以在存储过程中进行相应的编码转换(通常修改 varchar/char 字段)使得可以正常使用索引, 更多见: mysql-slow-when-run-as-stored-proc

    ... WHERE namecolumn = convert(in_namecolumn using latin1) collate latin1_swedish_ci
    

    jdbc 直连执行 sql

    通过 jdbc 连接执行 sql 的时候, 如果编码不一致, 同样需要对 varchar, char 类型进行转换, 如下所示:

    ... WHERE namecolumn = convert(in_namecolumn using latin1) collate latin1_swedish_ci
    

    否则可能出现以下编码不一致的错误(随 mysql-connector 版本不同可能有不同的行为):

    SQL state [HY000]: error code [1267]: Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8mb4_general_ci,COERCIBLE) for operation '='
    

    jdbc useSSL 参数变更

    在 mysql-connector-java 配置中, useSSL 参数有以下不同, 从 5.1.38 开始 useSSL 开始按 MySQL 5.5.45+, 5.6.26+ or 5.7.6+ 的版本默认开启, 对应的 requireSSL, verifyServerCertificate 两个参数也会跟着开启:

     5.1.38:
     ConnectionProperties.useSSL=Use SSL when communicating with the server (true/false), defaults to 'false'
    
    >= 5.1.38
     ConnectionProperties.useSSL=Use SSL when communicating with the server (true/false), default is 'true' when connecting to MySQL 5.5.45+, 5.6.26+ or 5.7.6+, otherwise default is 'false'
    
    

    MySQL 5.7.x 及以上的版本, 默认会启用 ssl, 客户端连接的时候会自协商加密, 除非显示指定不加密. mysql-connector-java 从 5.1.38 开始默认开启 useSSL. 所以用低版本 jdbc 连接 MySQL 5.7.x 不会有加密的问题, 用高版本 jdbc 连接 5.7.6+ 以上会有加密问题, 需要显示指定 useSSL=false, 用高版本的 jdbc 连接 MySQL 5.5, 5.6 不会有加密问题.

    到此这篇关于MySQL编码不一致可能引起的一些问题的文章就介绍到这了,更多相关MySQL编码不一致引起的问题内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • php和mysql中uft-8中文编码乱码的几种解决办法
    • MySQL查看与修改当前数据库编码的方法
    • 修改MySQL数据库中表和表中字段的编码方式的方法
    • MySql修改数据库编码为UTF8避免造成乱码问题
    • MySQL查看和修改字符编码的实现方法
    • MYSQL数据库使用UTF-8中文编码乱码的解决办法
    • Mysql数据库编码问题 (修改数据库,表,字段编码为utf8)
    • 修改mysql5.5默认编码(图文步骤修改为utf-8编码)
    • 查看修改mysql编码方式让它支持中文(gbk或者utf8)
    • MySQL字符编码设置方法
    上一篇:超详细MySQL8.0.22安装及配置教程
    下一篇:浅析MysQL B-Tree 索引
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    MySQL编码不一致可能引起的一些问题 MySQL,编码,不一致,可能,