我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySql超长自动截断的示例分析

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySql超长自动截断的示例分析

这篇文章主要介绍了MySql超长自动截断的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

如下

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

查询结果如下

MySql超长自动截断的示例分析

确实自动截断了,但是在项目中执行同样的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超长自动截断的示例分析”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySql超长自动截断的示例分析

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL长字符截断的实现示例

mysql超长字符截断又名"SQL-Column-Truncation",是安全研究者Stefan Esser在2008 年8月提出的。在MySQL中的一个设置里有一个sql_mode选项,当sql_mode设置为default时,即没有
2023-03-24

Python中自动微分的示例分析

这篇文章主要为大家展示了“Python中自动微分的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Python中自动微分的示例分析”这篇文章吧。一、简介antograd包是Pytorch中
2023-06-25

Java自动拆装箱的示例分析

这篇文章将为大家详细讲解有关Java自动拆装箱的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、拆装箱概念所谓的拆装箱,就是自从JDK1.5之后,java的基本类型和引用类型之间的相互转换。1.
2023-05-31

selenium自动化测试的示例分析

本篇文章为大家展示了selenium自动化测试的示例分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。下载驱动器http://chromedriver.storage.googleapis.com/
2023-06-26

Linux中启动与自启动的示例分析

这篇文章将为大家详细讲解有关Linux中启动与自启动的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Linux启动与自启动的实例详解一 启动与自启动服务启动:就是在当前系统中让服务运行,并提供功能
2023-06-09

SecureCRT自动记录日志的示例分析

这期内容当中小编将会给大家带来有关SecureCRT自动记录日志的示例分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。现在管理的数据库数量多,实时性强,经常遇到数据库突发事件,每次做的关键步骤操作我都保
2023-06-06

SpringBoot自动配置原理的示例分析

这篇文章主要介绍了SpringBoot自动配置原理的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、SpringBoot是什么SpringBoot 的诞生就是为了简
2023-06-22

mybatis plus自动生成器的示例分析

这篇文章将为大家详细讲解有关mybatis plus自动生成器的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。mybatis plus自动生成器解析使用这个可以超快速生成entity servic
2023-06-29

springBoot自动注入原理的示例分析

这篇文章给大家分享的是有关springBoot自动注入原理的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。@SpringBootApplication注解解读为什么我们的启动类上标注一个@SpringBo
2023-06-29

php实现自动加载的示例分析

这篇“php实现自动加载的示例分析”文章,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要参考一下,对于“php实现自动加载的示例分析”,小编整理了以下知识点,请大家跟着小编的步伐一步一步的慢慢理解,接下来就让我们进入
2023-06-06

ArrayList中自动扩充机制的示例分析

这篇文章主要为大家展示了“ArrayList中自动扩充机制的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“ArrayList中自动扩充机制的示例分析”这篇文章吧。ArrayList li
2023-05-30

编程热搜

目录