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


  • 相关阅读:
    Git 几个常用操作
    Ubuntu16.04安装YouCompleteMe
    常用命令总结
    启动Kernel提示Bad Data CRC
    linux4.15.1编译init/mounts报错
    编译Linux-4.15.1内核时遇到:“error : openssl/bio.h :No such file or folder”
    添加mtdparts引起的问题
    arm-linux-ld:u-boot.lds:1: ignoring invalid character `#' in expression
    smartgit的安装
    ubuntu下安装wine
  • 原文地址:https://www.cnblogs.com/ruanjianlaowang/p/11182504.html
Copyright © 2011-2022 走看看