問題描述
在 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
