mysql - mysql脚本中的双引号不起作用
问题描述
我想为我的 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';";
推荐阅读
- reactjs - 在 React 16 中正确使用带有元素数组的 React 片段
- c# - 使用c#在word中插入等式
- css - 未报告 CSS 错误,但border-image-source 和border-image-slice 不生成任何边框图像
- angular - Angular Directive 从 keydown 事件中获取剪贴板数据
- sql - SQL 触发器插入问题
- vba - 从 vba 中的周值获取月值
- c# - 如何在 C# 中将 post 方法中的参数发布到 Twilio 出站调用
- linux - 带有 C 的 Linux 沙箱,安全吗?
- 3dsmax - 电线参数 MaxPlus
- postgresql - postgres 中是否有任何独特的枚举数组类型?