为什么backticks在更新查询的SET部分不起作用(对于MySQL)?

为什么backticks在更新查询的SET部分不起作用(对于MySQL)?,mysql,ruby-on-rails,activerecord,Mysql,Ruby On Rails,Activerecord,下面的SQL UPDATE line_items SET `line_items.quantity` = 2 where line_items.id = 1234; 给我这个错误: ERROR 1054 (42S22): Unknown column 'line_items.quantity' in 'field list' 但是,这些查询都按预期工作: UPDATE line_items SET line_items.quantity = 2 where line_items.id = 1

下面的SQL

UPDATE line_items SET `line_items.quantity` = 2 where line_items.id = 1234;
给我这个错误:

ERROR 1054 (42S22): Unknown column 'line_items.quantity' in 'field list'
但是,这些查询都按预期工作:

UPDATE line_items SET line_items.quantity = 2 where line_items.id = 1234;
UPDATE line_items SET `quantity` = 2 where line_items.id = 1234;
UPDATE line_items SET quantity = 2 where line_items.id = 1234;
在这种特定情况下,backticks不起作用的原因是什么

我当前的MySQL版本是
服务器版本:5.5.43-0ubuntu0.14.04.1(Ubuntu)
,这是我上周安装的。我没有试过其他版本


我问这个问题的原因是RubyonRails正在生成一个更复杂的UPDATE+JOIN查询,但由于Rails添加了backticks,所以该查询不起作用。我正在试图找出谁的错:Rails、MySQL还是me:-)

不要在倒勾中包含表名和列名之间的句点分隔符。当您这样做时,它会将整个内容视为一个列名

你想要这个:

`line_items`.`quantity`
不是

最后的查询应该如下所示:

 UPDATE line_items SET `line_items`.`quantity` = 2 where line_items.id = 1234;

谢谢不知怎么的,我错过了。顺便说一句,我找到了一种让Rails生成查询而不使用反勾号的方法:我将
.update\u all('line\u items.quantity'=>2)
更改为
.update\u all(['line\u items.quantity=?',2])
 UPDATE line_items SET `line_items`.`quantity` = 2 where line_items.id = 1234;