0

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:inクエリ」

ただし、Sequel Pro でこの正確なクエリを実行すると、クエリは問題なく実行されます。何が起こっているのですか?

4

1 に答える 1

2

AR の mysql アダプターがデフォルトで複数のクエリ実行をオンにしていないという事実に関連している可能性がありますか?

これを簡単に解決するには、クエリを 2 つに分割し、それらを次々に実行します。もちろん、それらをトランザクションにラップします:)

于 2012-11-09T01:50:33.360 に答える