问题描述
在 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
