我在mysql master上执行了一个非常简单的查询 -
update test_db.test_table set name = "Crystal" where id=20;
工作得很好,并没有被奴隶复制。但是,当查询更改为使用单引号时,它可以工作 -
update test_db.test_table set name = 'Crystal' where id=20;
我试图找出解释为什么查询没有使用双引号的解释。有人能说出来吗?感谢。
答案 0 :(得分:0)
MySQL通常允许使用单引号或双引号来编写字符串文字,尽管ANSI SQL仅指定单引号。如果启用ANSI_QUOTES
SQL模式,则它遵循ANSI标准,只允许使用单引号。
听起来您正在使用基于语句的复制并且在从属设备上启用了ANSI_QUOTES
,而不是主设备。因此,主服务器接受查询,但当它被发送到从服务器时,它们拒绝它。
确保主服务器和从服务器上的所有SQL模式设置相同,或使用基于行的复制。