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.25安装教程(Mysql8.0.17安装教程推荐)
- mysql查看执行慢的sql(系统隐形杀手——阻塞与等待SQL)
- mysql分页查询有几种(MySQL 查询的排序、分页相关)
- mysql常用数据模型(MySQL数据库基于sysbench实现OLTP基准测试)
- mysql把重复数据删掉(mysql查找删除重复数据并只保留一条实例详解)
- 解释mysql慢查询(MySQL Threads_running飙升与慢查询的相关问题解决)
- 安装mysql中要注意什么问题(安装Mysql时可能会遇到的一些疑难杂症)
- mysql大量数据怎么处理(MySQL删除和插入数据很慢的问题解决)
- django mysql设置(Django框架使用mysql视图操作示例)
- mysql拆分成多行(mysql单字段多值分割和合并的处理方法)
- mysql的limit的分页使用(获取 MySQL innodb B+tree 的高度的方法)
- linuxmysql客户端搭建(一台linux主机启动多个MySQL数据库的方法)
- navicat不能连接到mysql报错2013(Navicat连接SQL Server数据:报错08001-命名管道提供程序的完美解决方法)
- MySQL中interactive_timeout和wait_timeout
- mysql字符类型长度限制
- mysql允许远程访问docker(Docker部署mysql远程连接 解决2003的问题)
- 文明6金币太少怎么办 文明6无限刷钱教程(文明6金币太少怎么办)
- 开国中将,王牌军63军首任政委,两个连襟一个上将一个少将传为佳话(王牌军63军首任政委)
- 臭名昭著的731部队最高负责人 石井四郎(臭名昭著的731部队最高负责人)
- 王牌部队,你看的剧情我看的时尚(你看的剧情我看的时尚)
- 被鉴定的古董价值300万 当心,你可能遇到诈骗了(被鉴定的古董价值300万)
- 英语难学吗(初中英语难学吗)
热门推荐
- 怎么用腾讯云主机搭建网站(用云主机怎么搭建网站?云主机建网站完整流程)
- python使用telnet(python 处理telnet返回的More,以及get想要的那个参数方法)
- python写一个二叉树(Python二叉搜索树与双向链表转换算法示例)
- docker配置和管理(Docker 容器监控原理及 cAdvisor的安装与使用说明)
- 如何用python爬取最新电影(使用python实现抓取腾讯视频所有电影的爬虫)
- sql server2012表的数据删除(SQL Server删除表及删除表中数据的方法)
- vue一个组件两种样式(Vue实现动态样式的多种方法汇总)
- 微信小程序引用模板的函数(微信小程序页面与组件之间信息传递与函数调用)
- css时钟(网页中时光轴CSS实现)
- js中arguments的用法
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9