【发布时间】:2011-03-02 11:24:56
【问题描述】:
@@SESSION.sql_mode;
@@GLOBAL.sql_mode;
两者都是空白,my.cnf 没有显示“NO_BACKSLASH_ESCAPE”标志,这是在我的本地服务器上运行但不在我的主服务器上运行的查询的一部分。
UPDATE `table`
SET `data` = "[{\"_talent\'s\"etc"
现在我知道我可以使用“[{”“_talents”“etc”,但我宁愿不使用,因为我更容易保持以前一直有效的当前转义安全方法。
我正在更新的表的字符集是 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 引擎逃脱了我的逃脱!? (如果我省略了转义,查询仍然失败)
【问题讨论】:
-
Blackslash...这是黑色安息日和枪炮玫瑰的某种组合吗?请原谅双关语。忍不住了。
-
请有人帮忙,我快疯了。它适用于我的本地服务器,但不适用于网络服务器。网络服务器似乎双重转义了相同的语句! :S
标签: mysql