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