【问题标题】:Syntax Error in mySQL script?mySQL 脚本中的语法错误?
【发布时间】:2014-08-26 13:37:29
【问题描述】:

所以当我运行这个脚本时

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())";

我收到此错误

ERROR 1064 (42000) at line 1:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“Merge - ${FIX_VERSION} ${BRANCH_TO_MERGE} to ${PROJECT_NAME} trunk”附近使用正确的语法

任何人都知道为什么会这样......当 jenkins 中没有任何变量时它可以工作。

【问题讨论】:

  • 在不了解 Jenkins 的情况下,我的第一个想法是变量替换不能像您期望的那样在字符串中工作。是否可以将语句放入变量并输出变量以确认它正在执行正确的替换?
  • 试试这个:mysql -h $mysqlhost -u $mysqluser --password=$mysqlpass --database=$mysqldatabase -se "INSERT into $mysqldatabase.$mysqltable (prodID,mergePerformed,mergeStartdate) 值($prodID,'合并 - ${FIX_VERSION} ${BRANCH_TO_MERGE} 到 ${PROJECT_NAME} 主干', now())";
  • 所以你的问题是“为什么变量没有在 Jenkins 中扩展”?在什么时候定义变量?您正在执行哪个构建步骤?执行set命令时能看到变量吗?
  • 好像是PowerShell脚本,建议你打印命令并检查是否有没有正确赋值的变量值。

标签: mysql linux shell jenkins mysql-workbench


【解决方案1】:

目前看不出有什么问题,正如 xQbert 所说,这很可能是您的一些变量替换。 MySQL 语法错误通常会在错误之后引用文本,所以我会看看 $prodID 中的内容,因为它最有可能是罪魁祸首。

【讨论】:

    猜你喜欢
    • 2013-10-14
    • 1970-01-01
    • 2017-07-30
    • 1970-01-01
    • 2018-02-21
    • 1970-01-01
    • 1970-01-01
    • 2011-05-12
    • 2011-06-30
    相关资源
    最近更新 更多