• Greenplum+mybatis问题解析


    1. 问题描述

    同事团队在使用springboot+mybatis+Greenplum时,发现通过mybatis数据查询正常,但是执行insert和update执行会报“Cause: org.postgresql.util.PSQLException: ERROR: The RETURNING clause of the INSERT statement is not supported in this version of Greenplum Database.”。

    而我们团队使用Greenplum的模式是:晚上通过spark跑批入库Greenplum,平台只使用了Greenplum的查询功能,未使用Mybatis进行插入操作。

    2. 解决方案

    2.1 问题定位

    首先创建同样格式的test表,验证jdbc方式是否可行,验证后,发现jdbc能正常插入,认为问题可能出在mybtis或者postgre/greeenplum版本问题上。

    2.2 定位结论

    经过多次验证,发现问题出在:

    Mybatis3默认在插入或者更新数据后,会返回影响行数( int insert(trorgvehiclviewtest record);),但是Greenplum是基于postgresql8.2开发的,postgresql8.2不支持返回这个特性导致的。

    2.3 解决方案

    ​ 通过在insert/update语句后面,增加statementType参数可以解决该问题,statementType参数设置为"CALLABLE" 就能正常使用。

    ​ 示例:

        <insert id="insert" parameterType="com.laowang.Test" statementType="CALLABLE">
        </insert>
    

    ​ 取值说明:

    1、STATEMENT:直接操作sql,不进行预编译,获取数据:$—Statement

    2、PREPARED:预处理,参数,进行预编译,获取数据:#—–PreparedStatement:默认

    3、CALLABLE:执行存储过程————CallableStatement


  • 相关阅读:
    angularjs基础——控制器
    angularjs基础——变量绑定
    mysql 小数处理
    centos无法联网解决方法
    mysql 按 in 顺序排序
    html5 file 自定义文件过滤
    淘宝、天猫装修工具
    MapGis如何实现WebGIS分布式大数据存储的
    CentOS
    PHP与Python哪个做网站产品好?
  • 原文地址:https://www.cnblogs.com/ruanjianlaowang/p/11182504.html
Copyright © 2020-2023  润新知