mysql 配置自动截断_MySql超长自动截断实例详解
MySql超长自动截断实例详解
小伙伴问到一个问题,为啥在项目中调用插入或者更新语句时超长的字无法自动截断,而在navicat中直接执行是可以自动截断的?
如下
CREATE TABLE `p_app_station` (
`WX_APP_ID` varchar(20) NOT NULL,
`APP_SECRET` varchar(33) DEFAULT NULL,
`IS_BINDING` int(1) DEFAULT '0',
`ACCOUNT_ID` int(13) DEFAULT NULL,
`TOKEN` varchar(40) DEFAULT NULL,
`BIND_URL` varchar(200) DEFAULT NULL,
`WX_APP_NAME` varchar(50) DEFAULT NULL,
`WX_APP_SID` varchar(50) DEFAULT NULL,
`WX_NO` varchar(50) DEFAULT NULL,
`CREATE_USER_ID` varchar(13) DEFAULT NULL,
`UPDATE_DATE` datetime DEFAULT NULL,
`CREATE_DATE` datetime DEFAULT NULL,
`UPDATE_USER_ID` varchar(13) DEFAULT NULL,
`STATION_TYPE` int(1) unsigned zerofill DEFAULT NULL COMMENT '标记类型(试用版:0,会员版:1,定制版:2)',
`ACTIVE_DATE` datetime DEFAULT NULL COMMENT '使用时间截止',
`APP_MODULE_ID` varchar(60) DEFAULT NULL COMMENT '推送模版消息ID',
PRIMARY KEY (`WX_APP_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
insert into p_app_station(wx_app_id) values('12121312312312啊啊啊啊啊aassasdasd');
select * from p_app_station where wx_app_id like '12121312312312%';
很明显varchar(20) 不足以容纳12121312312312啊啊啊啊啊aassasdasd
查询结果如下
确实自动截断了,但是在项目中执行同样的sql发现并非如此,反而报错。
Data truncated for column '%s' at row %ld
考虑到是同一个数据库,不存在模式不同,那么可能性应该出现在jdbcDriver上。
查看jdbc源码
private void setupServerForTruncationChecks() throws SQLException {
if (getJdbcCompliantTruncation()) {
if (versionMeetsMinimum(5, 0, 2)) {
String currentSqlMode = this.serverVariables.get("sql_mode");
boolean strictTransTablesIsSet = StringUtils.indexOfIgnoreCase(currentSqlMode, "STRICT_TRANS_TABLES") != -1;
if (currentSqlMode == null || currentSqlMode.length() == 0 || !strictTransTablesIsSet) {
StringBuilder commandBuf = new StringBuilder("SET sql_mode='");
if (currentSqlMode != null && currentSqlMode.length() > 0) {
commandBuf.append(currentSqlMode);
commandBuf.append(",");
}
commandBuf.append("STRICT_TRANS_TABLES'");
execSQL(null, commandBuf.toString(), -1, null, DEFAULT_RESULT_SET_TYPE, DEFAULT_RESULT_SET_CONCURRENCY, false, this.database, null, false);
setJdbcCompliantTruncation(false); // server's handling this for us now
} else if (strictTransTablesIsSet) {
// We didn't set it, but someone did, so we piggy back on it
setJdbcCompliantTruncation(false); // server's handling this for us now
}
}
}
}
查看getJdbcCompliantTruncation方法,其默认值为
private BooleanConnectionProperty jdbcCompliantTruncation = new BooleanConnectionProperty("jdbcCompliantTruncation", true,
Messages.getString("ConnectionProperties.jdbcCompliantTruncation"), "3.1.2", MISC_CATEGORY, Integer.MIN_VALUE);
因此从3.1.2版本在jdbcurl中如果没有设置jdbcCompliantTruncation那么默认将会执行不截断并且报错。
那么加上参数是否可以呢?
取舍一下:
如果截断当出现比超长可能会有精度丢失的风险。
因此建议还是在程序中检查。
目前正在做关于使用hibernate validate的相关。
以上就是关于MySQL 截断的讲解,大家如有疑问可以留言或者到本站社区交流讨论,共同进步, 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
您可能感兴趣的文章:mysql5.7.19 winx64解压缩版安装配置教程
centos6.4下mysql5.7.18安装配置方法图文教程
MySQL5.7.18下载和安装过程图文详解
MySql中使用正则表达式查询的方法
php检测mysql表是否存在的方法小结
mysql 配置自动截断_MySql超长自动截断实例详解相关推荐
- mysql数据表操作_MySQL数据表基本操作实例详解
本文实例讲述了MySQL数据表基本操作.分享给大家供大家参考,具体如下: 数据表的基本操作 1.主键约束要求主键列的数据唯一,并且不允许为空.主键能够唯一地识别表中的一条记录,可以结合外键来定义不同数 ...
- mysql简易购物车系统_基于PHP+Mysql简单实现了图书购物车系统的实例详解
基于PHP+Mysql简单实现了图书购物车系统的实例详解,购物车,这是,页面,简单,图书 基于PHP+Mysql简单实现了图书购物车系统的实例详解 易采站长站,站长之家为您整理了基于PHP+Mysql ...
- mysql数据存储过程详解_mysql数据存储过程参数实例详解
MySQL 存储过程参数有三种类型:in.out.inout.它们各有什么作用和特点呢? 一.MySQL 存储过程参数(in) MySQL 存储过程 "in" 参数:跟 C 语言的 ...
- Linux如何全盘搜索MySQL文件_Linux上的文件搜索命令实例详解
locate 基础了解 locate命令搜索的后台数据库路径:/var/lib/mlocate/mlocate.db ls -hl /var/lib/mlocate total 1.2M -rw-r- ...
- mysql数据库杀掉堵塞_Mysql解决USE DB堵塞详解
遇到故障,我们往往想的是如何解决这个故障,而不是从故障的根本去思考出现这个故障的原因?这样的结果,只能使我们得到了鱼,失去了渔.今天,我们就来分享一个由USE DB堵塞故障引发的思考案例. 故障描述 ...
- mysql 配置自动截断_MySql超长自动截断
小伙伴问到一个问题,为啥在项目中调用插入或者更新语句时超长的字无法自动截断,而在navicat中直接执行是可以自动截断的? 如下 CREATE TABLE `p_app_station` ( `WX_ ...
- mysql的存储过程原理_mysql存储过程原理与用法详解
本文实例讲述了Mysql存储过程原理与用法.分享给大家供大家参考,具体如下: 本文内容: 什么是存储过程 存储过程的创建 存储过程的使用 查看存储过程 修改存储过程 删除存储过程 首发日期:2018- ...
- mysql 秒杀 隔离级别_MySQL 四种隔离级别详解,看完吊打面试官
什么是事务 事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消.也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做. 事务的结束有 ...
- mysql 二叉树表设计_Mysql 索引模型 B+ 树详解
一.认识二叉树 首先,在了解 mysql 中的 B+ 树之前,我们需要搞懂什么是二叉树.二叉树是一种常见的非线形数据结构,数据是以一对多的形态组织起来的,我画了一张图来帮助你理解: 在二叉树中,有一种 ...
最新文章
- 小分子溶液当硬盘!布朗大学逆天研究:用代谢分子存储照片,准确率达99%
- Arrays.asList(arr)使用注意事项
- ora-24811提供写入的数据少于指定的数据_C++开源、高性能时序数据库pinusdb
- 【详细解析】7-1 两个有序序列的中位数 (25 分)
- pom.xml详细说明
- C语言结构体描述BMP的文件格式
- 信息学奥赛一本通 1172:求10000以内n的阶乘 | OpenJudge NOI 1.6 14:求10000以内n的阶乘
- 信息学奥赛一本通 2032:【例4.18】分解质因数
- Criteo公司在上海新开通一个数据中心
- 进击webpack4 (基础篇:配置 一)
- C#一个方法返回多个值
- leetcode-155-最小栈
- 5G SA信令流程介绍
- Jeff Dean 光辉事迹
- hadoop 查看文件大小以及文件数
- git常用命令(持续更新)
- 探讨一种新型的双进程守护应用保活
- linux使用单核_如何使用Linux还原单核计算机
- 初中英语语法(016)-被动语态
- 学计算机的自述,计算机的自述作文范文
热门文章
- 深度deepin安装apache tomcat
- CentOS6.5安装Tab增强版:bash-completion
- Java 程序性能优化《第一章》Java性能调优概述 1.4小结
- 《微软的软件测试之道》读书笔记 之 结构测试技术
- 大学计算机课的学后感,大学课程学习心得体会感想
- PTA-6-3 使用函数的选择法排序 (25分)(C语言)
- matlab实验题目,MATLAB实验题目
- 信息学奥赛一本通 1140:验证子串 | OpenJudge NOI 1.7 18
- 信息学奥赛一本通 1119:矩阵交换行 | OpenJudge NOI 1.8 01 矩阵交换行
- 线性代数 —— 矩阵快速幂