首页 > Web开发 > 详细

mybatis--org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

时间:2019-09-10 16:23:07      阅读:101      评论:0      收藏:0      [点我收藏+]

 

mysql在入库的时候报这个错

 

技术分享图片

 

一般的原因 
Mapper interface和xml文件的定义对应不上,需要检查包名,namespace,函数名称,方法名称等能否对应上。 
按以下步骤一一执行: 
1、检查xml文件 和 interface 是否在一个包下 
2、检查xml文件的namespace 是否和 interface 一一对应 
3、检查接口的方法名是否和xml的id 一致。

5、去掉xml文件中的中文注释 
6、随意在xml文件中加一个空格或者空行然后保存

我后面发现是xml里面没有 方法对应的sql【意不意外】。

 

修改完成后,测试环境保存成功,结果在生产上报如下错误

 

技术分享图片

 

liuzhizhi@lzz-rmbp|sakila-db # mysql -uroot -p < sakila-data.sql
Enter password:
ERROR 1785 (HY000) at line 81: When @@GLOBAL.ENFORCE_GTID_CONSISTENCY = 1, 
updates to non-transactional tables can only be done in either autocommitted statements or 
single-statement transactions, and never in the same statement as updates to transactional tables.

 

查了一下发现是和mysql的存储引擎有关系,

因为代码里有这样的语句

 

    public void insert(TInterfaceLogNew interfaceLogVoNew, TInterfaceLogNewConcent interfaceLogNewConcent) {
        logger.info("[接口日志]保存开始.");
        interfaceLogNewConcentDao.insert(interfaceLogNewConcent);
        interfaceLogNewDao.insertLog(interfaceLogVoNew);
        logger.info("[接口日志]保存成功.");
    }

 

这个方法是在一个事物里面的,而 t_interface_log_new_concent 的表的 引擎是InnoDB

 

技术分享图片

 

另一个表的引擎是 MyISAM,

后来将表都改为 InnoDB,入库不报错。

 

但是 有几张表是进行了分表,需要 关联查询的。

查询会报错

技术分享图片

 

最后的解决方案是 所有这几张表都改为: MyISAM。 

 

mybatis--org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

原文:https://www.cnblogs.com/llq1214/p/11396732.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!