我想为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;";
我尝试了所有可以将\“用作引号的方法,但没有找到解决方案的方法。
感谢您的回答,如果有人可以帮助我!
嵌入式双引号与周围的双引号冲突。在SQL中,无论如何还是使用单引号定义字符串通常是一个好习惯,因此我建议:
mysql -u user -ppasswd table -e "UPDATE kvstore SET val='$HOST' where `key`='externip';";