【发布时间】:2012-11-09 00:24:03
【问题描述】:
我正在尝试在我的 Rails 控制台中运行以下行:
ActiveRecord::Base.connection.execute "DELETE FROM recommendations WHERE place_id=4000000001267 AND recommender_id=2728498;UPDATE IGNORE recommendations SET place_id=4000000001267 WHERE place_id=4000000564630 AND recommender_id=2728498;"
它只是删除一条旧记录并重写另一条记录以进行合并。
Rails 控制台返回以下内容:
DELETE FROM recommendations WHERE place_id=4000000001267 AND recommender_id=2728498;UPDATE IGNORE recommendations SET place_id=4000000001267 WHERE place_id=4000000564630 AND recommender_id=2728498;
ActiveRecord::StatementInvalid: Mysql2::Error: 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 IGNORE recommendations SET place_id=4000000001267 WHERE place_id=40000005' at line 1: DELETE FROM recommendations WHERE place_id=4000000001267 AND recommender_id=2728498;UPDATE IGNORE recommendations SET place_id=4000000001267 WHERE place_id=4000000564630 AND recommender_id=2728498;
from /Users/huynguyen/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.2.6/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:243:inquery'`
但是,当我在 Sequel Pro 中运行这个精确查询时,查询运行得非常好。知道发生了什么吗?
【问题讨论】:
-
@Greg 忽略任何错误并继续,因为我将运行多个查询。
-
我过去遇到过类似的事情,请参阅 stackoverflow.com/questions/11127980/… 仍然没有得到明确的答案,但我最好的猜测是,当服务器运行时,为了更好地将 SQL 匹配到供应商。
-
@CyleHunter 我不得不更改我的代码来执行两个查询。请参阅下面的答案
标签: sql ruby-on-rails ruby-on-rails-3