3

这让我今天大吃一惊。我有一个 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

任何帮助是极大的赞赏。

4

2 回答 2

3

因为它在双引号内,所以您需要将所有这些反斜杠加倍。

如果您不需要扩展任何 shell 变量,请交换单引号和双引号。

于 2012-06-26T19:05:18.723 回答
0
mysql -e 'SELECT "\\\\server\\path\\"'
mysql -e 'update mytable SET myvalue = "\\\\server\\path\\" WHERE ID=10;'
于 2012-06-26T19:08:26.617 回答