「Jenkins Pipeline」- java.sql.SQLException: Incorrect string value: ‘\xAC\xED\x00\x05sr…’ for column…

  CREATE BY JENKINSBOT
原文链接:「Jenkins Pipeline」- java.sql.SQLException: Incorrect string value: ‘\xAC\xED\x00\x05sr…’ for column…
文章分类:「Continuous_Delivery:Jenkins_Pipeline:z.Error_List_(Jenkins_Pipeline):SQLException_Incorrect_string_value_xAC_xED_x00_x05sr…_for_column…」
文章标识:「fc885f56」

问题描述

在 Jenkins Pipeline 中,我们使用 PreparedStatement 执行 SQL 语句,产生如下错误:

java.sql.SQLException: Incorrect string value: '\xAC\xED\x00\x05sr...' for column 'content' at row 1

问题原因

传入 PreparedStatement 的 Sql 参数并不是 String 类型

使用以下代码可以验证,我们传入 的并不是 String 类型,而是 org.codehaus.groovy.runtime.GStringImpl 类型:

pipeline {
    agent {
        node {
            label 'NODE03-UBUNTU-20.04'
        }
    }
    stages {
        stage ("# 构建开始") {
            steps {
                script {
                    def str1 = "1"
                    def str2 = "2"
                    println "${str1}/${str2}".getClass().toString()
                }
            }
        }
    }
}

解决办法

解决办法很简单,转换成 String 类型即可:

// 解决办法
println "${str1}/${str2}".toString()

// 验证为 String 类型
println "${str1}/${str2}".toString().getClass().toString()

参考文献

mysql – java.sql.SQLException: Incorrect string value: ‘\xAC\xED\x00\x05sr…’ – Stack Overflow