【问题标题】:update table mariadb from bash script从 bash 脚本更新表 mariadb
【发布时间】:2021-03-11 23:09:45
【问题描述】:

尝试在我的 bash 脚本中编写表更新语句,但出现语法错误 mysql Ver 15.1 Distrib 5.5.68-MariaDB,适用于 Linux (x86_64),使用 readline 5.1

mysql -u UserName --password=MyPassword -D MyDatabase -e 'UPDATE MyTable SET name = SomeName WHERE number = someNumber ;'

ERROR 1064 (42000) at line 1:您的 SQL 语法有错误; 检查与您的 MariaDB 服务器版本相对应的手册 在 'SomeName WHERE number = someNumber' 附近使用的正确语法 第 1 行

【问题讨论】:

  • 直接使用 mariaDB 时是否有效?试着把 '' 放在 'SomeName' 周围
  • @VladL 你马上就发现了!我在下面发布了答案。

标签: mysql bash mariadb


【解决方案1】:

所以答案是:你必须像这样转义“”一个衬垫才能从 shell 更新 mysql db:

mysql -u userName --password=yourPassword -D databaseName -e "UPDATE tableName SET columnName = \"${variable}\" WHERE numberColumn = \"${numberVariable}\""

【讨论】:

  • 对不起,我把两个单引号放在一起,所以看起来像双引号。请在 MySQL 查询中使用单引号。
  • @VladL 通常是的,但这是 bash 脚本,因此如果您将单引号放在 ${variable} 上,它将被视为字符串,我的版本对我有用。 bash 中的单引号参考:howtogeek.com/howto/29980/…
  • hmmm,外部双引号应该足以允许变量扩展(对于在双引号之间引用的变量),同时还允许在 SQL 字符串周围使用单引号,例如,"UPDATE ..... columnName = '${variable}' WHERE numberColumn = '${numberVariable}'" ..还是 mariadb 需要双引号包围文字值?
猜你喜欢
  • 1970-01-01
  • 2020-02-02
  • 2021-07-22
  • 1970-01-01
  • 2013-06-20
  • 1970-01-01
  • 2010-09-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多