@@SESSION.sql_mode;
@@GLOBAL.sql_mode;
两者都是空白,my.cnf 没有显示“NO_BACKSLASH_ESCAPE”标志,这是在我的本地服务器上运行但不在我的主服务器上运行的查询的一部分。
UPDATE `table`
SET `data` = "[{\"_talent\'s\"etc"
现在我知道我可以使用“[{”“_talents”“等”,但我宁愿不使用,因为对我来说,保持我当前一直有效的逃避安全方法要容易得多。
字符集是我正在更新的表的 UTF-8。最奇怪的是它适用于插入但不适用于更新!
这个真的让我挠痒痒。有什么想法吗?
干杯
编辑:
我发现服务器正在尝试像这样解释查询:
Failed to execute SQL : SQL UPDATE `build` SET `data` = "[{\"_talent\'s" WHERE `build_id` = 1 AND `userId` = 1128; failed : 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 'UPDATE `build` SET `data` = "[{\\"_talent\\'s" WHERE `build_id` = 1 AND `userId`' at line 1
但肯定应该是一样的,为什么SQL引擎会逃避我的逃避!? (如果我遗漏了转义,查询仍然失败)
最佳答案
你可以试试这个-
UPDATE 'table'
SET 'data' = '[{"_talents"etc'
关于MySQL 添加额外的反斜杠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5166789/