Mysql 从bash脚本更新表mariadb

Mysql 从bash脚本更新表mariadb,mysql,bash,mariadb,Mysql,Bash,Mariadb,试图在bash脚本中编写表更新语句,但出现语法错误 mysql版本15.1发行版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 ;' 第1行出现错误1064(42000):SQL语法中有错误; 检查与您的MariaD

试图在bash脚本中编写表更新语句,但出现语法错误 mysql版本15.1发行版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 ;'
第1行出现错误1064(42000):SQL语法中有错误; 检查与您的MariaDB服务器版本对应的手册以了解 在“SomeName WHERE number=someNumber”附近使用的正确语法 第1行


因此答案是:您必须转义“like So\”一行代码才能从shell更新mysql db:

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

当直接使用mariaDB时,这是否有效?请尝试在'SomeName'@VladL周围放置“”,您马上就发现了它!我在下面发布了答案。很抱歉,我将两个单引号放在一起,所以看起来像是双引号。请在MySQL查询中使用单引号。@VladL通常是的,但这是bash脚本,因此如果您在${variable}上放置单引号它将被视为一个字符串,我的版本适合我。在bash:hmmm中引用单引号时,外部双引号应足以允许变量扩展(对于双引号之间引用的变量),同时还允许SQL字符串周围使用单引号,例如,
“UPDATE…”。。。。。columnName='${variable}'其中numberColumn='${numberVariable}'
。或者mariadb是否需要在文字值周围加双引号?