zoukankan      html  css  js  c++  java
  • 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


  • 相关阅读:
    js根据ip地址获取城市地理位置
    vue-cli项目中使用mock结合axios-mock-adapter生成模拟数据
    将图片转canvas
    判断浏览器是否联网
    头尾固定中间高度自适应布局 css
    经典闭包
    多余文字转化为省略号css
    $.grep()
    node 图片转base64
    CentOS 7下安装Mysql 5.7
  • 原文地址:https://www.cnblogs.com/ruanjianlaowang/p/11182504.html
Copyright © 2011-2022 走看看