mySQL脚本中的语法错误?

mySQL脚本中的语法错误?,mysql,linux,shell,jenkins,mysql-workbench,Mysql,Linux,Shell,Jenkins,Mysql Workbench,所以当我运行这个脚本时 mysql -h $mysqlhost -u$mysqluser -p$mysqlpass --database=$mysqldatabase -se "INSERT into $mysqldatabase.$mysqltable (prodID,mergePerformed,mergeStartdate) values ($prodID,'Merge - ${FIX_VERSION} ${BRANCH_TO_MERGE} to ${PROJECT_NAME} trunk

所以当我运行这个脚本时

mysql -h $mysqlhost -u$mysqluser -p$mysqlpass --database=$mysqldatabase -se "INSERT into $mysqldatabase.$mysqltable (prodID,mergePerformed,mergeStartdate) values ($prodID,'Merge - ${FIX_VERSION} ${BRANCH_TO_MERGE} to ${PROJECT_NAME} trunk', now())";
我得到这个错误

第1行出现错误1064(42000):SQL语法中有错误;检查与MySQL服务器版本对应的手册,以了解在第1行“Merge-${FIX_version}${BRANCH_to_Merge}to${PROJECT_NAME}trunk”,now())附近使用的正确语法


任何人都知道这是为什么……当jenkins中没有任何变量时,它就起作用了。

看不出任何错误,正如xQbert所说,这很可能是你的一些变量替换。
MySQL语法错误通常会在错误发生后引用文本,因此我会看看$prodID中的内容,因为它是最可能的罪魁祸首。

在不了解Jenkins的情况下,我的第一个想法可能是变量替换在字符串中无法按预期工作。是否可以将语句放入变量中并输出变量以确认其进行了正确的替换?请尝试以下操作:mysql-h$mysqlhost-u$mysqluser--password=$mysqlpass--database=$mysqldatabase-se“INSERT into$mysqldatabase.$mysqltable(prodID,mergePerformed,mergeStartdate)值($prodID,'Merge-${FIX_VERSION}${BRANCH_TO_MERGE}TO${PROJECT_NAME}trunk',now())”,所以你的问题是“为什么变量没有在Jenkins中展开?”?在哪一点定义了变量?您正在执行哪个构建步骤?您在执行
set
命令时是否可以看到变量?看起来像PowerShell脚本,建议您打印命令并检查是否有任何变量值未正确分配。