mysql字段多有什么问题(MySQL编码不一致可能引起的一些问题)
mysql字段多有什么问题
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编码不一致引起的问题内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!
原文链接:https://blog.arstercz.com/mysql-charset-cause-issue/
- mysql8.0中如何导入数据(mysql8.0.20数据目录迁移的方法)
- mysql sql优化方法(MySQL SQL优化教程之in和range查询)
- mysql优化使用方法(详解Mysql函数调用优化)
- mysql索引面试总结(Mysql数据库索引面试题程序员基础技能)
- mysql存储过程和函数(MySQL存储过程的查询命令介绍)
- mysql高级变量查询(MySQL 使用自定义变量进行查询优化)
- mysql 建表命令注释(mysql alter table命令修改表结构实例详解)
- mysql主从复制步骤(MySQL8 主从复制踩坑指南)
- mysql的7种索引(浅入浅出 MySQL 索引)
- phpmysql完全学习手册教程(Windows下搭建PHP开发环境Apache+PHP+MySQL)
- mysql怎么删除用户操作(解决mysql删除用户 bug的问题)
- mysql怎么使用null(MySQL null与not null和null与空值''''的区别详解)
- mysql将字符串转换为日期的函数(Mysql中时间戳转为Date的方法示例)
- mysql中怎么删除整张表(MySQL如何优雅的删除大表实例详解)
- mysql的索引及其介绍总结(浅析MysQL B-Tree 索引)
- mysql随机获取数据
- 全椒人,38年集体回忆 1980-2018 ,看完不要哭(全椒人38年集体回忆)
- 董元奔吟咏历代文人 1012新旧均可 全椒人张璪 1022 -1093(董元奔吟咏历代文人)
- 泪目 这位 刷屏 的英雄,是全椒人的骄傲(泪目这位刷屏)
- 人从众 火炎焱 全椒再现 正月十六走太平 的魅力(人从众火炎焱全椒再现)
- 官宣 全椒籍明星许海峰 奚秀兰 方芳 王璐瑶携手回家 走太平(全椒籍明星许海峰)
- 以前全椒人是怎么过冬的 满满都是回忆(以前全椒人是怎么过冬的)
热门推荐
- CSS中z-index层叠顺序
- php使用面向对象如何写好代码(PHP面向对象程序设计模拟一般面向对象语言中的方法重载overload示例)
- win10下安装mysql8.0.23 及 “服务没有响应控制功能”问题解决办法(win10下安装mysql8.0.23 及 “服务没有响应控制功能”问题解决办法)
- asp.net 参数化like模糊查询
- SQL SERVER存储过程调试
- vue使用echarts教程(Vue使用echarts可视化组件的方法)
- linux lnmp安装教程(LNMP系列教程之 SSL安装WordPress博客程序下载与安装)
- mysql8.0.20安装教程图解(mysql 8.0.24 安装配置方法图文教程)
- dedecms调用点击数(织梦DEDECMS中显示复制地址,推荐给QQ/MSN上的好友的代码)
- requests使用自定义cookie(Yii框架中用response保存cookie,用request读取cookie的原理解析)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9