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


    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。 

    ==============================================后续

    前几天在测试环境测试数据,修改了其中一张表的字段长度。

    然后就报这个错了

    注意注意,这几张分表是荣辱与共的关系,唇寒齿亡!!

    所有的 表的结构(索引、引擎、列、字符集等)要完全一致,完全!全!

    如果 几张表的 decimal 类型的字段不一致。查询表的汇总会出问题!!

  • 相关阅读:
    input输入密码变黑点密文
    清除浮动的几种方法
    const let,console.log('a',a)跟console.log('a'+a)的区别
    Egret Wiing3快捷键
    时间转换成2016/12/29 14:23:09格式
    http status code
    构造函数模式
    Log4net
    Autofac
    WebApi返回Json格式字符串
  • 原文地址:https://www.cnblogs.com/llq1214/p/11396732.html
Copyright © 2020-2023  润新知