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