问题解决:使用Mybatis Plus的Mapper插入达梦数据库报“数据溢出”错误

这篇具有很好参考价值的文章主要介绍了问题解决:使用Mybatis Plus的Mapper插入达梦数据库报“数据溢出”错误。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

使用Mybatis Plus的Mapper插入达梦数据库报“数据溢出”错误

问题描述

  1. 在进行批量插入中,抛出异常为数据溢出
    • 插入方法:this.baseMapper.insertBatchSomeColumn()
    • 抛出异常:数据溢出
  2. 对失败的数据进行循环,尝试使用单个插入的方法,同样抛出异常为数据溢出
    • 插入方法:this.baseMapper.insert
    • 抛出异常:数据溢出

错误日志输出

Cause: dm.jdbc.driver.DMException: 数据溢出
; 数据溢出; nested exception is dm.jdbc.driver.DMException: 数据溢出
	at org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.doTranslate(SQLStateSQLExceptionTranslator.java:104)
	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:70)
	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:79)
	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:79)

问题解决:使用Mybatis Plus的Mapper插入达梦数据库报“数据溢出”错误,开发问题汇总,mybatis,数据库,达梦

排查过程

  1. 使用异常断点:Breakpoints-> + Java Exception Breakpoints

  2. 找到调用栈中的执行方法:插入预处理执行的语句

  3. 发现语句中,如果实体字段定义为BigDecimal,其预处理的值是字符串格式
    问题解决:使用Mybatis Plus的Mapper插入达梦数据库报“数据溢出”错误,开发问题汇总,mybatis,数据库,达梦

  4. 到达梦窗口工具-DM管理工具中进行测试验证

    1. 新增测试表:t_simple,包含字段height,类型及精度为DEC(4,2)

      CREATE TABLE "t_simple"
      (
      "id" BIGINT NOT NULL,
      "name" VARCHAR(50),
      "height" DEC(4,2),
      NOT CLUSTER PRIMARY KEY("id")) STORAGE(ON "MAIN", CLUSTERBTR) ;
      
      COMMENT ON TABLE "t_simple" IS '测试表';
      COMMENT ON COLUMN "t_simple"."height" IS '身高(厘米)';
      COMMENT ON COLUMN "t_simple"."id" IS 'ID';
      COMMENT ON COLUMN "t_simple"."name" IS '姓名';
      
    2. 插入的值为字符串,出现报错:-6108: 字符串截断

      insert into t_simple (height) values ('175.23');
      

    问题解决:使用Mybatis Plus的Mapper插入达梦数据库报“数据溢出”错误,开发问题汇总,mybatis,数据库,达梦

    1. 插入的值为数字类型,报错:-6170: 列[xxx]精度超出定义
      问题解决:使用Mybatis Plus的Mapper插入达梦数据库报“数据溢出”错误,开发问题汇总,mybatis,数据库,达梦
  5. 使用Mybatis Plus的BaseMapper.insert插入的时候,当实体字段为BigDemical类型的,会转换成字符串,最后报错:达梦数据库异常,数据溢出

最终解决办法

备注:标度为小数点后的位数,如DEC(4,2)包含了2个小数,则整数有4-2

  1. 增大表字段类型的精度

    alter table "t_simple" modify "height" DEC(5, 2);
    
  2. 测试插入值为字符串:插入成功

    insert into t_simple (id,height) values (1,'175.23');
    

    问题解决:使用Mybatis Plus的Mapper插入达梦数据库报“数据溢出”错误,开发问题汇总,mybatis,数据库,达梦

  3. 测试插入值为数字类型:插入成功

    insert into t_simple (id,height) values (1,175.23);
    

    问题解决:使用Mybatis Plus的Mapper插入达梦数据库报“数据溢出”错误,开发问题汇总,mybatis,数据库,达梦文章来源地址https://www.toymoban.com/news/detail-724668.html

到了这里,关于问题解决:使用Mybatis Plus的Mapper插入达梦数据库报“数据溢出”错误的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【mybatis】mapper.xml中foreach的用法,含批量查询、插入、修改、删除方法的使用

    一、xml文件中foreach的主要属性 foreach元素的属性主要有 collection,item,index,separator,open,close。 collection: 表示集合,数据源 item :表示集合中的每一个元素 index :用于表示在迭代过程中,每次迭代到的位置 separator :表示在迭代时数据以什么符号作为分隔符 open :表示该语

    2024年02月12日
    浏览(8)
  • 解决使用MyBatis Plus自动映射功能中数据库表与实体类不匹配导致映射失败的深度探索与分布式实践

    摘要:在开发Java应用程序过程中,使用MyBatis Plus自动映射功能可以大大简化数据访问层的开发。然而,当数据库表与实体类的字段与属性没有对应关系时,可能会导致映射失败。本篇文章将深入探索这一问题,并结合Java深度和分布式实践,提供解决方案。 在开发基于Java的应

    2024年02月04日
    浏览(77)
  • Mybatis-Plus 自定义mapper批量新增修改函数

    version MybatisPlusConfig CustomizedSqlInjector InsertBatchMethod UpdateBatchMethod RootMapper 使用方式 mapper接口实现自定义的RootMapper,即可调用批量新增修改函数

    2024年02月12日
    浏览(14)
  • 【问题记录】IDEA Mybatis *Mapper.xml 中 sql 无提示、无高亮、格式化失效问题 (已解决)

    【问题记录】IDEA Mybatis *Mapper.xml 中 sql 无提示、无高亮、格式化失效问题 (已解决)

    【 问题 】 先说版本,win 11,idea 2023.1 如标题,想去格式化mybatis中写的sql,但是ctrl alt L 一顿处理,其中的sql没有按照sql命令的格式去格式化,此外写sql 无提示也无高亮 【 问题示例 】 未格式化前,显然格式已经差不多了,按理来说再格式化也就稍微调整 但格式化的结果是

    2024年02月04日
    浏览(27)
  • Springboot优雅单元测试之mapper的测试(基于mybatis-plus)

    基于springboot的工程,正常单元测试,可以利用IDEA的goto功能自动生成对应的测试类(测试方法),然后在生成的测试类加注解@SpringBootTest,执行对应的test方法即可。但是这样默认是会启动整个springboot应用的,如果有web,还会启动web容器。这个时间比较久, 不够优雅 。 直接撸

    2024年02月11日
    浏览(7)
  • MyBatis Plus Mapper.xml映射文件常用标签<if>、<foreach>、#{}、${}等

    一、判断 Integer、Long 等常数类参数 注意:判断常数类参数,只能判断 != null,不能判断 != \\\'\\\' 否则判断不会生效 二、判断 String 字符串类参数 注意:判断字符串类参数可以判断 != \\\'\\\' 三、判断参数值与指定的值,是否相等或不相等 注意: 1、判断 Integer、Long 等常数类型等于

    2024年02月09日
    浏览(7)
  • spring boot mybatis plus mapper如何自动注册到spring bean容器

    spring boot mybatis plus mapper如何自动注册到spring bean容器

    ##@Import(AutoConfiguredMapperScannerRegistrar.class) ##注册MapperScannerConfigurer ##MapperScannerConfigurer.postProcessBeanDefinitionRegistry方法扫描注册mapper ##找到mapper候选者 ##过滤mapper 类 候选者 ##BeanDefinitionHolder注册到spring 容器

    2024年01月17日
    浏览(7)
  • 使用达梦数据库遇到的异常问题

    使用达梦数据库遇到的异常问题

    dm.jdbc.driver.DMException: 数据转换丢失警告 我这里出现问题的SQL语句是: 原因 :是因为list集合中 rz 字段的数据超出的达梦库设置字段类型DEC(7,3)的长度。 dm.jdbc.driver.DMException: 数据未找到 在使用达梦数据库批量插入或更新数据时,给我报了一个从来没有遇到过的错误,当时我

    2024年02月13日
    浏览(9)
  • 【IDEA优化】:解决MyBatis Mapper 的XML文件SQL语句无法自动提示问题(独家方案,亲测可用)

    【IDEA优化】:解决MyBatis Mapper 的XML文件SQL语句无法自动提示问题(独家方案,亲测可用)

    IDEA中MyBatis编写mapper的SQL语句的时候无法提示SQL和数据库 无法正常方便的使用IDEA的提示功能,更准确无误的编写代码 亲测可用,一劳永逸(IDEA版本 IntelliJ IDEA 2021.1.3 ) 目的在于对 Mybatis的Mapper.XML中sql语句进行提示 网上的各种解决方案本质上其实都是配置SQL方言和SQL解析范

    2024年02月16日
    浏览(65)
  • JPA连接达梦数据库导致auto-ddl失效问题解决

    JPA连接达梦数据库导致auto-ddl失效问题解决

      现象:         项目使用了JPA,并且auto-ddl设置的为update,在连接达梦数据库的时候,第一次启动没有问题,但是后面重启就会报错,发现错误为重复建表,也就是说已经建好的表没有检测到,又重新走的建表流程。经过一天的排查,总结了2个解决方案。  问题的根源:

    2024年02月15日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包