mysql脚本中的引号不起作用

问题描述 投票:0回答:1

我想为FreePBX创建cron脚本。如果我从终端连接到mysql,它将以这种方式工作:

mysql -u user -ppasswd table
UPDATE kvstore SET val='$HOST' where `key`="externip";

但是在这样的脚本中:

mysql -u user -ppasswd table  -e "UPDATE kvstore SET val='$HOST' where `key`="externip";";

它返回我:

 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '=externip' at line 1

例如,我的脚本没有问题,因为脚本中没有引号:

mysql -u user -ppasswd table -e "UPDATE sipsettings SET data = '$HOST' WHERE sipsettings.keyword = 'externip_val' AND sipsettings.seq = 40 AND sipsettings.type = 0;";

我尝试了所有可以将\“用作引号的方法,但没有找到解决方案的方法。

感谢您的回答,如果有人可以帮助我!

mysql bash double-quotes cron-task quote
1个回答
0
投票

嵌入式双引号与周围的双引号冲突。在SQL中,无论如何还是使用单引号定义字符串通常是一个好习惯,因此我建议:

mysql -u user -ppasswd table  -e "UPDATE kvstore SET val='$HOST' where `key`='externip';";
© www.soinside.com 2019 - 2024. All rights reserved.