今天令人难以置信。 我有一个bash脚本来设置MySQL表中的值: 我必须设置的值是带有反斜杠的UNC路径:\\ $ HOSTNAME \ path \
在mysql内部查询有效:
update mytable SET myvalue = '\\\\MYSERVER\\path\\' WHERE ID=10;
但是从bash来看,它失败了:
mysql -e "update mytable SET myvalue = '\\\\$HOSTNAME\\path\\' WHERE ID=10;"
MySQL提供语法错误:
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the
right syntax to use near ''\\MYSERVER\path\' WHERE ID=10' at line 1
非常感谢任何帮助。
答案 0 :(得分:2)
因为它在双引号内,所以你需要将所有这些反斜杠加倍。
如果您不需要展开任何shell变量,请改为使用单引号和双引号。
答案 1 :(得分:0)
mysql -e 'SELECT "\\\\server\\path\\"'
mysql -e 'update mytable SET myvalue = "\\\\server\\path\\" WHERE ID=10;'